Черга (структура даних)
Матеріал з Вікіпедії — вільної енциклопедії.
Черга в програмуванні — динамічна структура даних, що працює за принципом "перший прийшов - перший пішов" (англ. FIFO — first in, first out). У черги є голова (англ. head) та хвіст (англ. tail). Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові.
Така черга повністю аналогічна звичній "базарній" черзі, в якій хто перший встав в неї, той першим буде обслуженим (але, на відміну від реальної черги, імовірність пройти поза чергою виключена)
[ред.] Основні операції з чергою
- англ. enqueue — "поставити в чергу". Операція додавання елемента в "хвіст" черги. При цьому довжина черги збільшується на одиницю. Якщо відбувається намагання додати елемент у вже заповнену чергу, відбувається її переповнення (англ. queue overflow).
- англ. dequeue — "отримання з черги". Операція, яка повертає елемент з голови та видаляє його з черги, таким чином встановлюючи голову на наступний за видаленим елемент та зменшуючи довжину на одиницю. При намаганні видалити елемент з пустої черги, виникає ситуація "незаповнення" (англ. queue underflow).
[ред.] Реалізація на мовах програмування
Черга може бути реалізована за допомогою масива Q[1...n], в якому зберігаються дані та двох додаткових змінних head[Q] та tail[Q], в яких зберігаються індекси відповідно "голови" та "хвоста" черги, lenght[Q] -- довжина черги.
Тоді операції enqueue та dequeue запишуться так:
ENQUEUE (Q, x) 1 Q[tail[Q]] := x 2 if tail[Q] = length[Q] 3 then tail[Q] := 1 4 else tail[Q] := tail[Q] + 1
DEQUEUE (Q) 1 x := Q[head[Q]] 2 if head[Q] = length[Q] 3 then head[Q] := 1 4 else head[Q] := head[Q] + 1 5 return x
[ред.] Дивись також
- Стек
- Черга з пріорітетами

