Drop links or images here to add them to the editor.

Een stapel (Stack) is een veelgebruikte datastructuur in de informatica. Ze werkt volgens het LIFO-principe: Last In, First Out. Het element dat je als laatste toevoegt, haal je er als eerste weer af.

LIFO — Last In, First Out: het laatst toegevoegde element wordt als eerste verwijderd. De laatste handeling die je uitvoert, is dus de eerste die je weer ongedaan maakt.

Een stapel borden

Denk aan een stapel borden in een keuken. Een schoon bord leg je boven op de stapel. Heb je een bord nodig, dan neem je het bovenste bord weg, het laatst toegevoegde dus. Wil je een bord ergens in het midden, dan moet je eerst alle borden erboven wegnemen.

Een stapel geeft je dus enkel makkelijk toegang tot het bovenste element. De andere elementen liggen eronder verborgen. Daarom spreken we van beperkte toegang: je werkt altijd langs de bovenkant.

Push en Pop

De twee belangrijkste operaties op een stapel zijn:

Allebei werken ze aan de bovenkant van de stapel:

"C" (laatst) "B" "A" (eerst) Push erbij Pop eraf bovenkant

In het voorbeeld werden achtereenvolgens "A", "B" en "C" op de stapel gelegd. Een Pop haalt nu eerst "C" weg (het laatst toegevoegde), dan "B", en pas als laatste "A".

De stapel gebruiken in C#

Net als bij een lijst zeg je bij het aanmaken welk type elementen de stapel bevat:

Stack<string> mijnStack = new Stack<string>();
MethodeBeschrijvingVoorbeeld
stack.Push(element)Legt een element bovenop de stapelmijnStack.Push("voorbeeld");
stack.Pop()Leest het bovenste element én verwijdert hetstring woord = mijnStack.Pop();
stack.Peek()Leest het bovenste element zonder het te verwijderenstring top = mijnStack.Peek();
stack.Clear()Verwijdert alle elementen van de stapelmijnStack.Clear();

Roep je Pop() of Peek() aan op een lege stapel, dan loopt je programma vast met een fout. Controleer daarom eerst met Count of er nog iets op de stapel ligt.

Hoeveel elementen? Count

De eigenschap Count geeft het aantal elementen op de stapel terug:

int aantalElementen = mijnStack.Count;

Een stapel doorlopen

Je kunt een stapel ook met een foreach doorlopen. Omdat een stapel LIFO is, zie je de elementen dan in omgekeerde volgorde van toevoegen: het laatst toegevoegde element eerst.

foreach (string element in mijnStack)
{
    Console.WriteLine(element);
}

In de volgende oefening beheer je met een stapel de taken van een gebruiker.