FAV-ZCU/KIV PPA2/08. ADT Fronta.md

42 lines
1.2 KiB
Markdown

# Fronta
- abstraktní datová struktura
- podobá se zásobníku
- **FIFO** - first in, first out
**Operace**
- přidání prvku na konec
- vybrání prvku na začátku
- odebrání prvku na začátku
### Implementace spojovým prvkem
- velmi podobná zásobníku
- kromě odkazu na první prvek uchovává i **odkaz na poslední prvek**
**Složitost operací**
- všechny $\Theta(1)$
- vyšší náročnost na paměť
### Implementace polem
- velmi podobná zásobníku
- po odebrání vznikají prázdná místa v poli
- je možné je využít pro přidávání
- struktura obsahuje:
- index prvního prvku
- počet obsazených indexů
- při přidávání prvku:
- kontrolujeme, jestli se prvek do pole vejde
- pokud je **místo na začátku**, vložíme prvek na začátek pole
- pokud je **pole plné** zvětšíme pole a zkopírujeme od indexu prvního prvku až do délky pole
- využijeme modula - pomocí něj index "přeteče" na začátek pole
- máme pole o 5 prvcích
- vkládáme na index 5, nicméně 5 % 5 je 0 (začátek pole)
**Složitost operací**
- vybrání/odebrání prvního prvku $\Theta(1)$
- přidání prvku na konec:
- většinou $\Theta(1)$
- při zvětšení pole $\Theta(n)$
- v průměru $\Theta(1)$