Først vil vi se på hvad er stak og hvad er kø individuelt, og så vil vi diskutere forskellene mellem stak og kø.
Hvad er en stak?
En datastruktur. I tilfælde af et array er tilfældig adgang mulig, dvs. ethvert element i et array kan tilgås til enhver tid, hvorimod den sekventielle adgang kun er mulig i en stak. Det er en beholder, der følger reglen om indsættelse og sletning. Det følger princippet LIFO (Last In First Out) hvor indsættelsen og sletningen finder sted fra den ene side kendt som en top . I stakken kan vi indsætte elementerne af en lignende datatype, dvs. de forskellige datatypeelementer kan ikke indsættes i den samme stak. De to operationer udføres i LIFO, dvs. skubbe og pop operation.
Følgende er de operationer, der kan udføres på stakken:
I stakken top er en pointer, som bruges til at holde styr på det sidst indsatte element. For at implementere stakken bør vi kende størrelsen på stakken. Vi er nødt til at allokere hukommelsen for at få størrelsen på stakken. Der er to måder at implementere stakken på:
Hvad er køen?
EN
Ligheder mellem stak og kø.
Der er to ligheder mellem stakken og køen:
Både stakken og køen er den lineære datastruktur, hvilket betyder, at elementerne lagres sekventielt og tilgås i en enkelt kørsel.
Både stakken og køen er fleksible i størrelsen, hvilket betyder, at de kan vokse og krympe i overensstemmelse med kravene på kørselstiden.
Forskelle mellem stak og kø
Følgende er forskellene mellem stakken og køen:
Grundlag for sammenligning | Stak | Kø |
---|---|---|
Princip | Det følger princippet LIFO (Last In-First Out), hvilket indebærer, at det element, der indsættes sidst, ville være det første, der slettes. | Det følger princippet FIFO (First In-First Out), hvilket indebærer, at det element, der tilføjes først, ville være det første element, der fjernes fra listen. |
Struktur | Den har kun én ende, hvorfra både indsættelsen og sletningen finder sted, og den ende er kendt som en top. | Den har to ender, nemlig for- og bagende. Forenden bruges til sletningen, mens bagenden bruges til indsættelsen. |
Antal brugte pointere | Den indeholder kun én pointer kendt som en top pointer. Den øverste markør indeholder adressen på det sidst indsatte element eller det øverste element i stakken. | Den indeholder to pointers forreste og bagerste pointer. Den forreste markør holder adressen på det første element, mens den bagerste viser adressen på det sidste element i en kø. |
Udførte operationer | Den udfører to operationer, push og pop. Push-operationen indsætter elementet i en liste, mens pop-operationen fjerner elementet fra listen. | Den udfører hovedsageligt to operationer, enqueue og dequeue. Enqueue-operationen udfører indsættelsen af elementerne i en kø, mens dequeue-operationen udfører sletningen af elementerne fra køen. |
Undersøgelse af den tomme tilstand | Hvis top==-1, betyder det, at stakken er tom. | Hvis front== -1 eller front = rear+1, betyder det, at køen er tom. |
Undersøgelse af fuld tilstand | Hvis top== max-1, betyder denne betingelse, at stakken er fuld. | Hvis rear==max-1, betyder denne tilstand, at stakken er fuld. |
Varianter | Den har ingen typer. | Det er af tre typer som prioritetskø, cirkulær kø og dobbeltkø. |
Implementering | Det har en enklere implementering. | Det har en forholdsvis kompleks implementering end en stak. |
Visualisering | En stak er visualiseret som en vertikal samling. | En kø visualiseres som en vandret samling. |