Очередь – это частный случай однонаправленного списка, добавление элементов в который выполняется в один коец, а выборка – из другого конца. Другие операции с очередью не определены. При выборке элемент исключается из очереди. Очередь работает по принципу: FIFO (First-In, First-Out) - поступивший первым, обслуживается первым.
Для формирования очереди и работы с ней необходимо иметь три переменные типа указатель, первая из которых определяет начало очереди, вторая – конец очереди, третья – вспомогательная.
Описание компоненты очереди и переменных типа указатель дадим следующим образом:
Type
PQueue=^TQueue;
TQueue = record
D:T;
Link: PQueue;
end;
Var
pBeg, pEnd, pAux: PQueue;
где pBeg – указатель начала очереди, pEnd – указатель конца очереди, pAux – вспомогательный указатель. Тип Т определяет тип данных компоненты очереди.
Начальное формирование очереди выполняется следующими операторами:
New(pBeg);
pBeg^.Link:=nil;
pBeg^.D:=D1;
pEnd:=pBeg;
Добавление компоненты в очередь производится в конец очереди:
New(pAux);
pAux^.Link := nil;
pBeg^.Link := pAux;
pEnd := pAux;
pEnd^.D := D2;
Добавление последующих компонент производится аналогично.
Выборка компоненты из очереди осуществляется из начала очереди, одновременно компонента исключается из очереди. Выборка компоненты выполняется следующими операторами:
D1:=pBeg^.D; //Чтение данного из начало очереди
pBeg:=pBeg^.Link;//Переход к следующему элементу