Przejdź do zawartości

Kolejka (informatyka)

Z Wikipedii, wolnej encyklopedii
Idea kolejki

Kolejka (ang. queue) – liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu).

Operacje związane z kolejką zwyczajowo nazywa się enqueue („zakolejkuj”) oraz dequeue („odkolejkuj”)[1]. Kolejka działa tak jak kolejka w sklepie i ma podobną strukturę. Składa się z początku (Front, Head) oraz końca (Back, Tail). Nowy element zawsze dodawany jest na końcu, analogicznie do klienta, który zawsze staje na końcu kolejki. Usunięcie z kolejki odpowiada obsłużeniu klienta w sklepie, czyli osoby, która aktualnie czekała najdłużej (tj. znajduje się z przodu kolejki).

Specjalną modyfikacją kolejki jest kolejka priorytetowa – każda ze znajdujących się w niej danych dodatkowo ma przypisany priorytet (klucz), który służy do określenia kolejności poszczególnych elementów w zbiorze. Oznacza to, że pierwsze na wyjściu niekoniecznie pojawią się te dane, które w kolejce oczekują najdłużej, lecz te o największym (lub najmniejszym) priorytecie[2][3].

Kolejkę spotyka się przede wszystkim w sytuacjach związanych z różnego rodzaju obsługą zdarzeń. W szczególności w systemach operacyjnych ma zastosowanie kolejka priorytetowa, przydzielająca zasoby sprzętowe uruchomionym procesom[4].

Przeciwieństwem kolejki jest stos, bufor typu LIFO (ang. Last In, First Out; ostatni na wejściu, pierwszy na wyjściu), w którym jako pierwsze obsługiwane są dane wprowadzone jako ostatnie.

Przypisy

[edytuj | edytuj kod]
  1. Cormen i in. 2012 ↓, s. 232.
  2. Cormen i in. 2012 ↓, s. 161-164.
  3. Banachowski, Diks i Rytter 2001 ↓, s. 70-78.
  4. Linux Priority-Queue Scheduler. lse.sourceforge.net. [dostęp 2018-03-13].

Bibliografia

[edytuj | edytuj kod]
  • „Elementarne struktury danych”: „Stosy i kolejki”. W: Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein: Wprowadzenie do algorytmów. Warszawa: Wydawnictwo Naukowe PWN, 2012, s. 232-233. ISBN 978-83-01-16911-4.