Structurile de date liniare sunt fundamentale în informatică, organizând elementele într-o succesiune ordonată, fiecare element având unul sau doi vecini. În acestă lecție pentru liceu (clasele 9-12), vom analiza patru tipuri principale: vectori, liste (simple și dublu înlănțuite), stive și cozi.
Vectorul (array) este cea mai simplă structură, cu elemente stocate în zone consecutive de memorie, accesibile direct prin index. Este rapid la citire/scriere O(1), dar inserarea și ștergerea sunt lente (O(n)). Se utilizează când dimensiunea este cunoscută fix sau se permite realocare.
Lista înlănțuită constă din noduri, fiecare conținând o valoare și un pointer către următorul nod (listă simplu înlănțuită) sau și către precedentul (dublu înlănțuită). Inserarea/ștergerea la început sau la final este O(1), dar căutarea și accesul prin index sunt O(n). Este utilă când se fac multe modificări dinamice.
Stiva (stack) respectă principiul LIFO (Last In, First Out). Operațiile principale sunt push (adaugă în vârf), pop (elimină din vârf) și top (citește vârful). Se implementează frecvent cu vector sau listă înlănțuită. Aplicații: evaluarea expresiilor, funcții recursive, backtracking.
Coada (queue) respectă principiul FIFO (First In, First Out). Operațiile sunt enqueue (adaugă la sfârșit), dequeue (elimină de la început) și front (citește primul element). Se implementează circular (cu vector) sau cu liste. Aplicații: gestionarea resurselor, parcurgerea în lățime (BFS), buffer-e.
La Bacalaureat, elevii trebuie să știe să implementeze aceste structuri în C/C++ (sau pseudocod), să analizeze complexitatea operațiilor și să aleagă structura potrivită în funcție de cerințe. Exercițiile tipice includ simularea procesării unei secvențe, evaluarea unei expresii postfixate sau inversarea unei liste.
Teorie avansată: diferența dintre stivă și coadă la nivel de memorie, utilizarea stivei în apelurile recursive (stack frame), optimizarea cozii circulare pentru a evita realocările, implementarea listelor generice (template) și avantajele listelor dublu înlănțuite față de cele simple.
Concepte cheie: Structură liniară de date, LIFO vs FIFO, Complexitatea operațiilor (O(1), O(n)), Implementare cu vectori și liste înlănțuite, Stivă și coadă în evaluarea expresiilor, Parcurgerea și manipularea listelor înlănțuite
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.