Hoppa till innehåll

Köer

↑
Datastrukturer

En kö följer FIFO: först in, först ut. Det värde som lades till först tas också bort först.

Operation Vad händer? Typisk tid
Enqueue Lägg till ett värde O(1) amorterat
Dequeue Ta bort från början O(1)
Peek Läs nästa värde utan att ta bort det O(1)

Prova själv

Först in först ut (FIFO)

Vi lägger till längst bak och tar bort längst fram. Det äldsta värdet lämnar först.

  1. Lägg till flera värden i följd.
  2. Titta på nästa värde. Det har väntat längst i kön.
  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# | QueueExample.cs
var items = new Queue<int>();
items.Enqueue(10);
items.Enqueue(20);
Console.WriteLine(items.Peek()); // 10
Console.WriteLine(items.Dequeue()); // 10

Köer används för schemaläggning, händelsehantering och bredden-först-sökning. De bevarar ankomstordningen.

En kö tar ut det objekt som har väntat längst: först in, först ut. FIFO säger inget om prioritet, färdigställandetid eller rättvisa i ett distribuerat system. Om vissa uppgifter måste gå före kan en prioritetskö eller schemaläggare passa bättre.

Köer används i bredden-först-sökning, uppgiftshantering, meddelandeflöden och händelsesystem. De hjälper när producent och konsument arbetar i olika takt, men löser inte överbelastning automatiskt. Du behöver ibland begränsningar och en strategi för att bromsa inflödet.

En ringbuffert eller länkad lista kan lägga till och ta bort objekt från kön i konstant tid. Om du tar bort första elementet i en vanlig arraylista kan alla senare objekt behöva flyttas.