Всем перечисленным структурам свойственна операция "выборка" (чтение с удалением).
Очередью называется структура данных, добавление записи в которую производится в конец цепочки, а выборка осуществляется из начала цепочки. Очередь работает по принципу
FIFO (First-In, First-Out) – поступивший первым, обслуживается первым.
Стеком называется структура данных, добавление записи в которую и выборка записи из которой производится из начала цепочки (вершины стека). Стек работает по принципу LIFO (Last-In, First-Out) – поступивший последним, обслуживается первым.
Деком называется структура данных, у которой добавление и выборка записей осуществляется как в начале, так и в конце цепочки. Дек является обобщением структур данных очередь и стек.
Логические описания.
Пусть записи принадлежат типу Inf; S - стек; S' - непустой стек; О - очередь; О'- непустая очередь.
Тогда можно определить стек и очередь следующим образом:
Стек
S=(пусто¦S');
S'=(i:Inf,s:S)
Oчередь
О=(пусто¦О');
О'=(i:Inf,o:O¦o:O,i:Inf).
Это рекурсивные определения структур стек и очередь. Рекурсивное определение предполагает использование рекурсивных алгоритмов при реализации операций.
|
|
Операции над деком включают все операции, перечисленные в таблице, учитывая, что S и O есть частные случаи дека.
Имя операции | Функциональ-ные спецификации | Аргументы | Результат | Описание |
Создать | ®S ®O | пустой s пустая o | Создается пустой стек или очередь | |
Пусто? | S®Boolean O®Boolean | s o | истина или ложь | Пуст ли стек, или очередь? |
Первый | S®T O®T | (t, s) (t, o) | t t | Определение элемента подлежащего обслуживанию |
Выборка | S®S O®O | (t, s) (t, o) | s o | Из стека или очереди удален первый элемент |
Добавление | T´S®S T´O®O | t, s t, o | (t, s) (t,o) | Добавлен новый элемент |