Stak vs kø
Stabel er en ordnet liste, hvor indsættelse og sletning af listeelementer kun kan udføres i den ene ende kaldet toppen. På grund af denne grund betragtes stack som en LIFO-datastruktur (Last in First out). Kø er også en ordnet liste, hvor indsættelse af listeelementer udføres i den ene ende kaldet den bageste, og sletningen af elementer udføres i den anden ende kaldet den forreste. Denne indsættelses- og sletningsmekanisme gør køen til en FIFO-datastruktur (First in First out).
Hvad er stak?
Som nævnt tidligere er stack en datastruktur, hvor elementer tilføjes og fjernes fra kun den ene ende kaldet toppen. Stakke tillader kun to grundlæggende operationer kaldet push and pop. Trykoperationen tilføjer et nyt element øverst i stakken. Pop-operationen fjerner et element fra toppen af stakken. Hvis stakken allerede er fuld, betragtes den, når en push-handling udføres, som en stakoverløb. Hvis en pop-operation udføres på en allerede tom stakle, betragtes den som en stakunderstrøm. På grund af det lille antal operationer, der kan udføres på en stak, betragtes det som en begrænset datastruktur. I henhold til den måde, hvorpå push- og pop-operationerne er defineret, er det tydeligt, at elementer, der sidst blev tilføjet til stakken, først går ud af stakken. Derfor betragtes stack som en LIFO-datastruktur.
Hvad er kø?
I en kø tilføjes elementer fra bagsiden af køen og fjernes fra fronten af køen. Da elementerne, der tilføjes først, fjernes fra køen først, opretholder det FIFO-rækkefølgen. På grund af denne rækkefølge af tilføjelse og fjernelse af elementer repræsenterer kø ideen om en kasselinje. Generelle operationer, der understøttes af en kø, er operationer i kø og de-kø. En-kø-operation tilføjer et element på bagsiden af køen, mens de-kø-operationen fjerner et element fra fronten af køen. Generelt har køer ikke en grænse for antallet af elementer, der kan føjes til køen udover hukommelsesbegrænsningerne.
Hvad er forskellen mellem stak og kø?
Selvom både stabler og køer er slags sorterede lister, har de nogle vigtige forskelle. I stabler kan tilføjelse eller sletning af ting kun udføres fra den ene ende kaldet toppen, mens i køer tilføjes elementer fra den ene ende kaldet den bageste, og sletning af ting sker fra den anden ende kaldet den forreste. I en stak fjernes poster, der sidst føjes til stakken først fra stakken. Derfor betragtes stack som en LIFO-datastruktur. I køer fjernes poster, der tilføjes først, fra køen først. Derfor betragtes kø som en FIFO-datastruktur.
Relateret link:
Forskellen mellem stak og bunke