Aceasta e o versiune anterioară a paginii.
O stivă reprezintă o listă cu structuri de date de tipul: Last-In-First-Out (LIFO).
Un exemplu comun ar fi un teanc de cărți: tot punem cărți pe o masă, dar în momentul când vrem să le ridicăm începem cu ultima, pusă deasupra teancului.
Definim structura astfel:
struct stack{ int s[size]; int top; } st;
int st_full(){ //int st_empty{ if(st.top>=size - 1) //if(st.top==-1) return 1; else return 0; }
void push(int item){ st.top++; st.s[st.top]=item; }
int pop(){ int item; item = st.s[st.top]; st.top--; return (item); }
Observații
1.Când introducem elemente într-o stivă,trebuie să incrementăm top-ul și apoi să adăugam elementul.
2.Când ștergem un element,trebuie întâi să ștergem elementul și apoi să decrementăm top-ul.
3.O stivă poate fi implementată cu ajutorul unui vector sau cu liste înlănțuite.
O coadă este o structură de date ce modelează un buffer de tip First-In-First-Out (FIFO).Astfel, primul element introdus în coadă va fi și primul care va fi scos din coadă.
Definim structura astfel:
struct queue{ int queue[size]; int rear = -1; }Q int front = 0;
int Qempty(){ if(front > rear) return 1; return 0; }
void Qinsert(int item){ Q.rear++; Q.queue[Q.rear]==item; }
void Qdelete(){ int item; if( Qempty() ) return -1; else { elem = Q.queue[Q.front]; front ++; return item; } }
De cele mai multe ori sunt implementate folosind liste dublu înlănțuite.
Dintr-un anume punct de vedere, se poate considera că atât stiva cât si coada clasică sunt specializări ale tipului abstract dequeue întrucât ambele se pot implementa folosind dequeue (și restrângând operațiile ce se realizează asupra sa).
În aceste condiții,operațiile de bază asupra cozii devin: