Noțiunea de coadă — primul venit, primul servit

Bază~13 min3 pași

De ce contează?

Stai la rând la brutărie. Cine a venit primul e servit primul; cine tocmai a intrat se așază la capătul rândului și așteaptă. Nimeni nu sare peste. Această regulă simplă și corectă — „primul venit, primul servit” — este, în programare, structura numită coadă.

Ce este o coadă

O coadă (engleză queue) este o structură în care elementele sunt servite în ordinea în care au sosit. Regula se numește FIFOFirst In, First Out (primul intrat, primul ieșit).

Are două capete cu roluri fixe:

  • spatele (back) — singurul loc unde adaugi un element;
  • fața (front) — singurul loc de unde scoți un element.
Observația-cheie

Spre deosebire de stivă (LIFO — ultimul intrat iese primul), coada păstrează ordinea naturală a sosirii. Stiva e ca un teanc de farfurii; coada e ca rândul la casă.

Cum se comportă

Pornim de la o coadă goală și adăugăm 3 clienți (A, B, C), apoi servim unul:

coada
A
B
C
fata
spate
A a venit primul (în față), C ultimul (la spate). Următorul servit va fi A.
coada
B
C
fata
spate
După servirea lui A, B avansează în față. Ordinea sosirii rămâne respectată.

Operațiile de bază (intuitiv)

OperațieCe faceLa ce capăt
push (enqueue)adaugă un elementspate
pop (dequeue)scoate elementul servitfață
frontcitește cine urmează (fără a scoate)față
emptyspune dacă mai e cineva

Unde apare în viața reală

  • Clienți la ghișeu, mașini la o intersecție cu semafor.
  • Comenzi într-un restaurant, procesate în ordinea primirii.
  • Pachete de date trimise pe rețea, livrate în ordine.
  • Parcurgerea în lățime (BFS) a unui graf — explorezi vecinii în ordinea descoperirii.

Vizualizare

Urmărește cum elementele intră pe la spate și ies pe la față, păstrând mereu ordinea sosirii:

Greșeli frecvente

Confuzii frecvente la început:

  • Confunzi coada cu stiva. Coada e FIFO (primul venit iese primul); stiva e LIFO. Întreabă-te: „cine iese primul?” înainte de a alege structura.
  • Scoți de la capătul greșit. Adaugi la spate, scoți din față — nu invers; altfel strici ordinea.
  • Citești front dintr-o coadă goală. Verifică întâi empty(), altfel accesezi ceva inexistent.
  • Crezi că poți accesa mijlocul. O coadă „pură” lucrează doar la capete; pentru acces liber ai nevoie de un vector.

Recapitulare

  • Coada respectă regula FIFO: primul venit este primul servit.
  • Adaugi mereu la spate și scoți din față — capete cu roluri fixe.
  • Modelează ordini naturale (rânduri, comenzi, BFS); diferă de stivă, care e LIFO.

Întrebarea 1 / 3

Ce înseamnă FIFO?