Stack vs. Queue
Stos to uporządkowana lista, w której wstawianie i usuwanie elementów listy można wykonać tylko na jednym końcu zwanym górną. Z tego powodu stos jest uważany za strukturę danych Last in First out (LIFO). Kolejka jest również uporządkowaną listą, w której wstawianie elementów listy odbywa się na jednym końcu zwanym tylnym, a usuwanie elementów odbywa się na drugim końcu zwanym frontem. Ten mechanizm wstawiania i usuwania sprawia, że kolejka jest strukturą danych FIFO.
Co to jest stos?
Jak wspomniano wcześniej, stos jest strukturą danych, w której elementy są dodawane i usuwane tylko z jednego końca zwanego górną. Stosy umożliwiają tylko dwie podstawowe operacje zwane push i pop. Operacja wypychania dodaje nowy element na górze stosu. Operacja pop usuwa element ze szczytu stosu. Jeśli stos jest już pełny, po wykonaniu operacji wypychania uważa się go za przepełnienie stosu. Jeśli operacja pop jest wykonywana na już pustym stosie, jest to uważane za niedopełnienie stosu. Ze względu na niewielką liczbę operacji, które można wykonać na stosie, jest to uważane za ograniczoną strukturę danych. Ponadto, zgodnie ze sposobem, w jaki zdefiniowane są operacje push i pop, jasne jest, że elementy, które zostały dodane do stosu jako ostatnie, najpierw wychodzą ze stosu. Dlatego stos jest uważany za strukturę danych LIFO.
Co to jest kolejka?
W kolejce elementy są dodawane z tyłu kolejki i usuwane z przodu kolejki. Ponieważ elementy, które są dodawane jako pierwsze, zostaną najpierw usunięte z kolejki, zachowuje kolejność FIFO. Ze względu na kolejność dodawania i usuwania elementów kolejka reprezentuje ideę linii kasy. Ogólne operacje obsługiwane przez kolejkę to operacje w kolejce i w kolejce. Operacja w kolejce doda element z tyłu kolejki, natomiast operacja w kolejce usunie element z przodu kolejki. Ogólnie rzecz biorąc, oprócz ograniczeń pamięci kolejki nie mają ograniczenia liczby elementów, które można dodać do kolejki.
Jaka jest różnica między stosem a kolejką?
Mimo że zarówno stosy, jak i kolejki są rodzajami uporządkowanych list, mają one kilka ważnych różnic. W stosach dodawanie lub usuwanie elementów można wykonać tylko z jednego końca zwanego górą, natomiast w kolejkach dodawanie elementów odbywa się z jednego końca zwanego tylnym, a usuwanie elementów odbywa się z drugiego końca zwanego frontem. W stosie elementy, które zostaną dodane do stosu jako ostatnie, zostaną najpierw usunięte ze stosu. Dlatego stos jest uważany za strukturę danych LIFO. W kolejkach elementy dodane jako pierwsze zostaną najpierw usunięte z kolejki. Dlatego kolejka jest uważana za strukturę danych FIFO.
Powiązany link:
Różnica między stosem a stosem