De ce contează?
Imaginează-ți un teanc de farfurii curate în bucătărie. Când speli o farfurie, o pui deasupra teancului. Când ai nevoie de una, o iei tot de deasupra — nimeni nu trage o farfurie din mijloc, fiindcă tot teancul s-ar prăbuși. Ultima farfurie pusă e prima pe care o iei. Exact așa funcționează o stivă.
Ce este
O stivă (în engleză stack) este o structură de date în care adaugi și scoți elemente doar dintr-un singur capăt, numit vârf. Capătul opus, pe care nu îl atingi niciodată direct, se numește bază.
Regula care definește stiva are un nume: LIFO — Last In, First Out, adică „ultimul intrat = primul ieșit". Elementul pe care l-ai pus cel mai recent este și primul pe care îl vei scoate. Cel pus primul (de la bază) iese ultimul.
De ce e utilă o asemenea restricție? Pentru că multe probleme cer exact acest comportament: vrei să te întorci la cel mai recent lucru cu care ai lucrat. Când rezolvi paranteze, când faci „pasul înapoi" într-un labirint sau când programul tău apelează o funcție din altă funcție — de fiecare dată ai nevoie de „ultimul lucru lăsat deoparte". Stiva îți dă acest „ultimul" instantaneu.
Reține esența: LIFO + acces doar la vârf. Pe o stivă nu poți ajunge direct la un element din mijloc sau de la bază — vezi și atingi doar vârful. Dacă vrei farfuria a treia de jos, trebuie întâi să iei toate farfuriile de deasupra ei. Această limitare nu e un defect — e chiar puterea stivei: îți garantează că lucrezi mereu cu cel mai recent element, fără să cauți.