Zásobník (anglicky Stack) je abstraktní datová struktura, která slouží k ukládání prvků v lineárním uspořádání. Je fundamentální součástí informatiky a funguje na principu LIFO (Last In, First Out), což v překladu znamená „poslední dovnitř, první ven“.
Tuto strukturu si lze představit jako tos talířů v jídelně:
Každá implementace zásobníku musí podporovat následující základní operace:
| Operace | Název | Popis |
|---|---|---|
| Vložení | ``push()`` | Přidá nový prvek na vrchol zásobníku. |
| Odebrání | ``pop()`` | Odebere prvek z vrcholu zásobníku a vrátí jeho hodnotu. |
| Náhled | ``peek()`` nebo ``top()`` | Vrátí hodnotu prvku na vrcholu, ale neodebere jej. |
| Je prázdný? | ``isEmpty()`` | Vrátí true, pokud v zásobníku nejsou žádné prvky. |
| Velikost | ``size()`` | Vrátí aktuální počet prvků (volitelné). |
V programování lze zásobník implementovat dvěma hlavními způsoby:
Jedná se o statickou implementaci.
Jedná se o dynamickou implementaci.
class Stack { pole data[100]; int top = -1; // Ukazatel na vrchol (prázdný zásobník) void push(x) { top++; data[top] = x; } int pop() { if (top == -1) return error; hodnota = data[top]; top--; return hodnota; } }
Zásobník je jednou z nejpoužívanějších struktur, často i tam, kde to uživatel nevidí.
Pravděpodobně nejdůležitější využití. Když program zavolá funkci:
> Poznámka: Pokud dojde k nekonečné rekurzi, paměť zásobníku se vyčerpá a program spadne na chybu Stack Overflow.
Textové editory (Word, VS Code) používají dva zásobníky pro sledování změn:
Kompilátory používají zásobník pro kontrolu, zda jsou závorky ve zdrojovém kódu správně spárovány.
Zásobník se používá pro vyhodnocování matematických výrazů zapsaných v Reverzní polské notaci (např. ``3 4 +`` místo ``3 + 4``).
Je důležité nezaměňovat zásobník s frontou.
| Vlastnost | Zásobník (Stack) | Fronta (Queue) |
| Princip | LIFO (Last In, First Out) | FIFO (First In, First Out) |
| Přidávání | Push (na vrchol) | Enqueue (na konec) |
| Odebírání | Pop (z vrcholu) | Dequeue (ze začátku) |
| Analogie | Tos talířů | Fronta u pokladny |
Operace nad zásobníkem jsou extrémně rychlé, protože se vždy pracuje pouze s jedním koncem datové struktury.
Autorem tohoto textu je AI asistent (2025).