ДекЕще один вариант структуры данных - очередь с двойным доступом, или, как ещё ее называют - двухконечная очередь (
Double
Ended
Queue). Для дека добавление и удаление элементов возможны с обоих концов списка.
С деком возможны следующие операции:
- Добавление элемента в "голову" дека
Procedure PushStart(Var Deq: TDeq; Ch: TData);
- Добавление элемента в "хвост" дека
Procedure PushFinish(Var Deq: TDeq; Ch: TData);
- Изъятие элемента из "головы" дека
Function PopStart(Var Deq: TDeq): TData;
- Изъятие элемента из "хвоста" дека
Function PopFinish(Var Deq: TDeq): TData;
В присоединенном файле содержится текст модуля для работы с деком.
Пример использования модуля:
Uses DeqUnit;
Var mD: TDeq;
Begin
InitDeq(mD);
PushStart(mD, 'A');
PushStart(mD, 'B');
PushFinish(mD, 'F');
PushFinish(mD, 'G');
PrintDeck(mD);
While not isEmpty(mD) Do
WriteLn( PopFinish(mD) );
DestroyDeq(mD);
End.