Hoppa till innehåll

Stackar

↑
Datastrukturer

En stack följer LIFO: sist in, först ut. Det senast tillagda värdet tas bort först.

Operation Vad händer? Typisk tid
Push Lägg till ett värde O(1) amorterat
Pop Ta bort från toppen O(1)
Peek Läs nästa värde utan att ta bort det O(1)

Prova själv

Senast in först ut (LIFO)

Vi lägger till och tar bort i toppen. Det senast tillagda värdet lämnar först.

  1. Lägg till flera värden i följd.
  2. Titta på nästa värde. Det ligger överst på stacken.
  3. Ta bort ett värde. Nästa värde ändras, men de andra ligger kvar i sin ordning.
  4. Fortsätt tills samlingen är tom.
C# | StackExample.cs
var items = new Stack<int>();
items.Push(10);
items.Push(20);
Console.WriteLine(items.Peek()); // 20
Console.WriteLine(items.Pop()); // 20

Stackar passar ångrahistorik, djupet-först-sökning och tolkning av nästlade uttryck. Även rekursiva anrop hanteras med en anropsstack.

En vanlig stack tar bort objektet som ligger överst. Det är LIFO: sist in, först ut. Stacken sorterar inte värden. Den bevarar ordningen som du lade in objekten i.

Stackar används bland annat för ångra-funktioner, parsning, djupet-först-sökning och metodanrop. En webbläsares bakåtknapp liknar en stack, men verklig webbläsarhistorik fungerar mer avancerat.

Push och pop är normalt konstanta operationer. En arraybaserad stack kan ibland behöva allokera större lagring, men insättningar blir ofta amorterat konstanta. Kontrollera alltid fallet där stacken är tom.