Een wachtrij (Queue) is een datastructuur die werkt volgens het
FIFO-principe: First In, First Out. Het element dat je als eerste
toevoegt, haal je er ook als eerste weer af. Dat is het omgekeerde van een
stapel.
FIFO — First In, First Out: het eerst toegevoegde element wordt als eerste verwijderd.
Een Queue lijkt op een wachtrij in het dagelijks leven: de eerste persoon
die in de rij gaat staan, wordt ook als eerste geholpen; wie zich achteraan
aansluit, is als laatste aan de beurt. Denk aan een rij aan de kassa, mensen die
op de bus wachten, of een file auto’s.
Anders dan bij een stapel werk je dus aan twee kanten: je sluit achteraan aan, en je wordt vooraan geholpen.
De twee belangrijkste operaties op een wachtrij zijn:
Enqueue — een element achteraan toevoegen (aansluiten);Dequeue — het voorste element wegnemen (en teruggeven).In het voorbeeld sloten "A", "B" en "C" in die volgorde aan. Een Dequeue
haalt nu eerst "A" weg (vooraan, het eerst toegevoegde), dan "B", en pas als
laatste "C".
Queue<string> mijnQueue = new Queue<string>();
| Methode | Beschrijving | Voorbeeld |
|---|---|---|
queue.Enqueue(element) | Voegt een element achteraan toe | mijnQueue.Enqueue("Eerste"); |
queue.Dequeue() | Leest het voorste element én verwijdert het | string item = mijnQueue.Dequeue(); |
queue.Peek() | Leest het voorste element zonder het te verwijderen | string eerste = mijnQueue.Peek(); |
queue.Clear() | Verwijdert alle elementen uit de wachtrij | mijnQueue.Clear(); |
Net als bij een stapel lopen
Dequeue()enPeek()vast op een lege wachtrij. Controleer dus eerst metCountof er nog iemand in de rij staat.
Countint aantalElementen = mijnQueue.Count;
Een foreach over een wachtrij geeft de elementen in gewone volgorde: het
eerst toegevoegde element eerst.
foreach (string element in mijnQueue)
{
Console.WriteLine(element);
}
In de volgende oefeningen gebruik je een wachtrij voor een rij klanten in een winkel en voor het verwerken van taken.