InfoBook.ro ← Harta anului
Modul 07 · Structuri avansate
Modul 07 · Conținut 1.1

Stiva și coada

Două moduri specializate de a folosi un vector: stiva (ultimul intrat, primul ieșit) și coada (primul intrat, primul ieșit). Cazurile particulare ale listei, exact cum le cere programa.

🎯 Obiectiv 1Deosebești stiva (LIFO) de coadă (FIFO) și le implementezi cu un vector.
🎯 Obiectiv 2Folosești <stack> și <queue> din STL: push, pop, top/front, empty.
🎯 Obiectiv 3Rezolvi 10 probleme clasice, cu soluții complete în C++ și Python.
1

Stiva (LIFO) și coada (FIFO)

Stiva de farfurii: pui deasupra, iei tot de deasupra — ultimul intrat, primul ieșit. Coada la ghișeu: cine vine primul e servit primul.

🧪 Experimentează: adaugă și scoate elemente din ambele

x =

Stivă — LIFO

ultimul intrat = primul ieșit
▲ vârful — aici se întâmplă tot

Coadă — FIFO

primul intrat = primul ieșit
◀ fața (ies de aici) · spatele (intră aici) ▶
adaugă câteva valori în amândouă, apoi scoate — privește DIFERENȚA 👆

Implementarea cu un vector — tot ce-ți trebuie

Observă eleganța C++: stiva e doar un vector + un vârf: push = stiva[vf] = x; apoi vf++ · pop = vf--; apoi val = stiva[vf]. Coada are doi indici: fața și spatele.

⚙ STL pe viu — programul se scrie singur: <stack> și <queue>

În C++ nu trebuie să-ți construiești singur structurile — biblioteca standard ți le dă gata făcute. Apasă instrucțiunile: containerele se mișcă SUS, iar programul tău se scrie singur JOS, linie cu linie, cu efectul în comentariu.

x =

stack<…> s

LIFO — totul se întâmplă la .top()
▲ s.top() — vârful

queue<…> q

FIFO — intră la spate, iese pe la .front()
◀ q.front() (iese) · spatele (intră) ▶
alege o instrucțiune 👆 — fiecare click devine o linie de program
2

Pauză scurtă: textul ca șir de caractere

Câteva probleme de mai jos lucrează cu text (paranteze, cuvinte). Șirurile de caractere se studiază pe larg în clasa a X-a — aici înveți doar strictul necesar, cât să poți rezolva problemele.

📝 Tot ce-ți trebuie despre string

Vestea bună: un șir de caractere se comportă exact ca un vector (Modulul 04), doar că în loc de numere ține litere. Ai deja toate reflexele — s[i], parcurgere cu for, lungime.

Bazele — declarare, citire, acces

Parcurgerea unui text — exact ca la vectori

Lipirea textelor (concatenare): operatorul + unește două texte, în ambele limbaje — "ab" + "c" dă "abc". Îl folosim la ultima problemă, ca să construim numere din cifrele 1 și 2. Un text gol se scrie "".
Atât ne trebuie! În clasa a X-a vei învăța tot capitolul: căutare în text, înlocuire, tăiere, comparare, bibliotecile <cstring> și <cctype>. Aici textul e doar „un vector de litere" pe care îl parcurgi.
3

10 probleme rezolvate cu stivă și coadă

Încearcă întâi singur — rezolvările se deschid cu parola profesorului. Apoi comută între ⚙ C++ și 🐍 Python.

Exersează și pe pbinfo.ro: caută la categoria „Stive și cozi" — aceleași idei, verificate automat.
4

Fișa de sinteză

Două structuri, două superputeri.

Stiva (LIFO): push = stiva[vf] = x, apoi vf++ · pop = vf--, apoi val = stiva[vf]. Farfuriile!
STL gata făcute: stack<int> s / queue<int> q — push, pop, top/front, empty; merg și cu pair<int,int> (make_pair, .first/.second).
Coada (FIFO): enqueue la spate, dequeue din față — doi indici. Ghișeul!
Underflow: pop pe stivă goală / dequeue pe coadă goală = eroare — verifică întâi dacă mai e ceva!
Când stivă, când coadă? ai nevoie de ULTIMUL adăugat → stivă; de PRIMUL adăugat → coadă.
În clasa a X-a: pe vectorii SORTAȚI se construiesc căutarea binară și interclasarea — te așteaptă acolo.
← anteriorModul 06 · Biblioteci urmează →Modul 08 · Metode de sortare