Kolejka (informatyka)
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]- ↑ Cormen i in. 2012 ↓, s. 232.
- ↑ Cormen i in. 2012 ↓, s. 161-164.
- ↑ Banachowski, Diks i Rytter 2001 ↓, s. 70-78.
- ↑ 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.
- „Podstawowe struktury danych”: „Lista”. W: Lech Banachowski, Krzysztof Diks, Wojciech Rytter: Algorytmy i struktury danych. Warszawa: Wydawnictwa Naukowo-Techniczne, 2001, s. 25-27. ISBN 83-204-2658-8.