This is an old revision of the document!
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 = -1; } st;
Verificăm dacă stiva e plină sau goală:
int st_full(){ //int st_empty{ if(st.top>=size - 1) //if(st.top==-1) return 1; else return 0; }
Adăugarea:
void push(int item){ st.top++; st.s[st.top]=item; }
Ștergerea:
int pop(){ int item; if(st_empty()) //presupunem ca nu exista elemente return -1; //cu valoarea -1 item = st.s[st.top]; st.top--; return (item); }
Observații:
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; int front = 0; }Q;
IsEmpty - întoarce 0 dacă coada este goală;1 dacă are cel puțin un element. int Qempty(){
if(Q.front > Q.rear) return 1; return 0;
}
Enqueue / Adăugarea - adaugă un element (entitate) în coadă.Adăugarea se poate face doar la sfârșitul cozii.
void Qinsert(int item){ Q.rear++; Q.queue[Q.rear] = item; }
Dequeue/ștergere - șterge un element din coadă și îl returnează.Ștergerea se poate face doar la începutul cozii.
int Qdelete(){ int item; if( Qempty() ) //in acest caz, alegem o valoare de return return -1; // ce NU poate fi confundata cu un element //presupunem ca NU exista niciun element cu valoarea -1 else { item = Q.queue[Q.front]; Q.front ++; return item; } }
Template pentru codul sursa stack_queue-lab3.zip.