Queue
Een queue (wachtrij) is een datastructuur die werkt volgens het FIFO-principe (First In, First Out). Dit betekent dat het eerste item dat in de rij wordt geplaatst, als eerste wordt verwerkt. Je kunt een queue vergelijken met een rij bij de kassa: degene die het eerst aankomt, wordt als eerste geholpen.
Inhoudsopgave
Achteraan aansluiten: Zo werkt een queue
Een queue heeft twee belangrijke bewerkingen: enqueue en dequeue. Bij enqueue wordt een nieuw element achteraan in de rij toegevoegd, terwijl dequeue ervoor zorgt dat het eerste element uit de rij wordt verwijderd en verwerkt.
Queues worden veel gebruikt in de informatica. Een bekend voorbeeld is een printwachtrij, waarbij documenten in de volgorde van binnenkomst worden afgedrukt. Ook in netwerkverkeer speelt de queue een belangrijke rol, omdat inkomende verzoeken op basis van volgorde worden verwerkt. Daarnaast worden queues toegepast in task scheduling, zoals bij achtergrondprocessen in een besturingssysteem, waar taken één voor één worden uitgevoerd op basis van prioriteit of volgorde.
Een hele rij aan verschillende queues
Queues komen in verschillende vormen voor, afhankelijk van de toepassing en de manier waarop elementen worden beheerd. In sommige gevallen is een eenvoudige wachtrij voldoende, terwijl andere situaties vragen om een flexibele aanpak, zoals het verwerken van taken met verschillende prioriteiten of het efficiënt hergebruiken van geheugenruimte:
- Lineaire Queue: Standaard wachtrij met het FIFO-principe.
- Dubbele Queue (Deque): Elementen kunnen aan beide kanten worden toegevoegd en verwijderd.
- Circulaire Queue: Optimalisatie waarbij de rij opnieuw wordt gebruikt na verwerking.
- Prioriteitsqueue: Elementen met een hogere prioriteit worden eerder verwerkt.
Veelgestelde vragen
Een queue werkt met FIFO (First In, First Out), terwijl een stack LIFO (Last In, First Out) gebruikt.
Bij taken die in volgorde verwerkt moeten worden, zoals printopdrachten, netwerkverkeer of taakplanning.
Een queue waarbij de laatste positie weer aansluit op de eerste, om geheugen efficiënter te gebruiken.
Ja, maar een deque uit de collections-module is efficiënter voor het toevoegen en verwijderen van elementen.