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

1.2 KiB

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)