Didaxis
lecție · Informatică

Coada

Model FIFO și operații fundamentale.

Se face în:
Clasa a IX-a
Clasa a X-a
Clasa a XI-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Coada este o structură FIFO („primul intrat, primul ieșit”). Dacă Ana, Dan și Ioana intră în această ordine într-o coadă, Ana este servită prima. Păstrăm un indice prim pentru primul element și un indice ultim pentru ultimul; adăugarea se face după ultim, iar eliminarea avansează prim. În Python, o listă poate arăta ideea: q = ["Ana", "Dan", "Ioana"], q[0] este „Ana”, iar q.pop(0) elimină și returnează „Ana”. Pentru cozi lungi, collections.deque oferă extragere eficientă de la început.

Desen la lecția „Coada”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Coada este o structură de date liniară cu două capete: elementele se adaugă la sfârșit și se elimină de la început. Ordinea de acces este FIFO: primul element introdus este primul scos. Operațiile fundamentale sunt introducerea la sfârșit (push), eliminarea de la început (pop), citirea primului element (front) și testul de coadă goală. În implementarea cu tablou se păstrează doi indici: prim pentru primul element și ultim pentru ultimul; coada goală are prim = 1 și ultim = 0. Introducerea mărește ultim și scrie elementul, iar eliminarea mărește prim. Citirea sau eliminarea cer ca prim <= ultim. Numărul elementelor este ultim - prim + 1. Varianta liniară nu refolosește pozițiile eliberate; la capacitatea , o coadă circulară actualizează indicii cu (indice + 1) % C. În C++, std::queue oferă push, front, pop și empty; în Python, collections.deque oferă append și popleft în timp constant, spre deosebire de list.pop(0), care mută toate elementele. Coada este structura parcurgerii în lățime a unui graf: vârfurile descoperite intră în coadă și sunt procesate în ordinea descoperirii.

Exemplul 1 — coada cu deque (Python).

from collections import deque
q = deque()
for x in (2, 5, 7):
    q.append(x)
if q:
    scos = q.popleft()
    print(scos, q[0] if q else "coadă goală")

După cele trei inserări, coada este [2, 5, 7]. Extragerea întoarce 2, apoi primul element este 5; ieșirea este 2 5. Ambele operații durează un număr constant de pași.

Exemplul 2 — coada cu tablou (C++).

#include <iostream>
using namespace std;
int main() {
    int c[10], prim = 1, ultim = 0;
    c[++ultim] = 2; c[++ultim] = 5; c[++ultim] = 7;
    if (prim <= ultim) {
        int scos = c[prim];
        ++prim;
        if (prim <= ultim) cout << scos << " " << c[prim];
        else cout << scos;
    }
    return 0;
}

După inserări, (prim, ultim) = (1, 3). Se salvează 2 în scos, prim avansează la 2 și se citește 5 numai după verificarea că poziția mai există. Ieșirea este 2 5. Numărul elementelor rămase este .

Exemplul 3 — coada circulară. Cu capacitatea 4, elementele sunt memorate în pozițiile 0..3, iar poziția unui element nou este (prim + n) % 4, unde n este numărul elementelor. Se introduc 1, 2, 3 (pozițiile 0, 1, 2), se scot două elemente (prim devine 2), apoi se introduc 4, 5, 6 în pozițiile 3, 0 și 1. Tabloul conține acum 5 6 3 4, coada are 4 elemente, iar primul element este 3. Pozițiile din fața lui prim au fost refolosite, ceea ce coada liniară nu permite.

Notează la fiecare operație perechea (prim, ultim) și conținutul activ, adică elementele de la prim la ultim. Elementele scoase rămân în tablou, dar nu mai fac parte din coadă. Diferența dintre stivă și coadă se vede la scoatere: stiva scoate ultimul intrat, coada pe primul. La coada circulară, urmărește și poziția în care se scrie un element nou.

Exemplul 4 — urmărirea unui fragment. Ce se afișează în urma executării secvenței de mai jos?

int c[10], prim = 1, ultim = 0;
c[++ultim] = 4;
c[++ultim] = 8;
c[++ultim] = 6;
prim++;
c[++ultim] = 9;
prim++;
cout << c[prim] << ' ' << ultim - prim + 1;
  • a) 4 2
  • b) 6 2
  • c) 6 4
  • d) 9 2

Răspunsul corect este b). După trei inserări, coada conține 4, 8, 6 pe pozițiile 1–3. Primul prim++ elimină 4, deci prim = 2. Se adaugă 9 pe poziția 4. Al doilea prim++ elimină 8, deci prim = 3 și coada conține 6 și 9. Primul element este c[3] = 6, iar numărul de elemente este . Varianta d) citește ultimul element, nu primul.

Coada goală. Scoaterea dintr-o coadă goală este o eroare: în implementarea cu tablou, condiția prim > ultim trebuie verificată înainte de orice pop, iar în Python popleft() aplicat unui deque gol produce IndexError. De aceea ciclurile de prelucrare au forma „cât timp coada nu este goală”.

Greșeli frecvente

  • Greșit: într-o coadă se scoate ultimul element introdus.
    Corect: se scoate primul element introdus.
  • Greșit: după eliminarea unui element, valoarea lui este ștearsă din tablou.
    Corect: prim avansează, iar elementul nu mai face parte din coadă.
  • Greșit: list.pop(0) este la fel de rapidă ca deque.popleft().
    Corect: pop(0) mută toate elementele rămase.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

  • OMEC 4370/2026, anexa 8, Informatică IX intensiv, p. 155–156
  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633; rocnee.eu
  • OMEC 6930/2025, anexa 66, Informatică IX CS militar, Monitorul Oficial nr. 4 bis/8.01.2026, pp. 2563–2578; cdn.edupedu.ro; centralizator oficial actualizat prin OMEC 3224/2026, legislatie.just.ro
  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X intensiv; rocnee.eu
  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI; plan de încadrare: OMEC 7723/2024, anexa 2, tabelele 1–25, legislatie.just.ro; filiera tehnologică: OMEC 7724/2024, anexa 4, tabelul calificării, legislatie.just.ro

Documente consultate

  • Programa școlară de informatică intensiv, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
  • Programa școlară de informatică, clasa a XI-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
  • cppreference, C++ Containers library, std::queue, en.cppreference.com/w/cpp/container/queue

Desene: Redactare proprie (desen original)

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.