Toto je starší verze dokumentu!
Fronta i zásobník jsou 2 principiálně velmi podobné způsoby dočasného uložení dat v rámci programu. Používají se v případech, kdy je třeba postupně projít všechny prvky dat, a to právě jednou.
Funguje na principu FIFO (first in first out), to znamená, že si frontu můžeme představit třeba jako frontu na úřadu práce. Lidé (data) se řadí po příchodu do fronty a ve stejném pořadí se i dostanou na řadu (data jsou tedy dříve vrácena).
Řešení pomocí statického pole funguje tak, že si vytvoříme danou frontu jako pole. V rámci funkce push(objekt) pak postupně dáváme data do pole a ve funkci pop() vždy vezmeme první položku a všechny zbylé posuneme o jedno místo dopředu.
Nevýhodou tohoto způsobu implementace je, že jsme omezeni velikostí námi vytvořeného pole. Výhodou zase naopak je, že za všech okolností víme, kolik máme na data místa.
Metodu řešení pomocí ukazatelů můžeme vidět na níže uvedeném diagramu. Výhoda tohoto řešení je zároveň i jeho nevýhodou – jsme už sice schopni přidávat do fronty příspěvky až do konce paměti, zároveň ale (při špatné implementaci) může dojít k přehlcení nebo až přetečení paměti, což může vést k nestabilitě systému.
Funguje na principu LIFO (last in first out), to znamená, že funguje stejně jako zásobník v samopalu. Při nabíjení samopalu (vkládání dat) skládáme vždy náboje na spodek zásobníku a vršíme je na sebe, při výstřelu (výběru dat) se náboje berou svrchu – poslední vložený je tedy vystřelen jako první.
Řešení zásobníku pomocí statického pole je stejné jako u fronty, jediný rozdíl je v tom, že si v další proměnné musíme držet index posledních vložených dat a při zavolání funkce pop() vezmeme data z indexu posledních vložených data a index snížíme o jedna.
Výhody a nevýhody jsou stejné jako u fronty.