История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Стек (st ac k) — это специальный тип списка, в котором все вставки и удаления элементов выполняются только на одном конце, называемом вершиной (top). Такой метод доступа обозначается аббревиатурой LIFO (last-in-first-out — последним пришел — первым вышел).
Основные операции со стеками имеют сложившиеся названия, которыми мы, естественно, воспользуемся. Выделим пять операций (базовых функций), считая, что любые действия со стеками можно выполнить, используя эти операции (и только их).
1. Создание пустого стека — операция Create;
2. Проверка стека на наличие в нем хотя бы одного элемента — предикат (логическая функция) IsNull.
3. Получение элемента из вершины непустого стека — операция GetTop;
4. Удаление элемента с вершины непустого стека (элемент выталкивается из стека) — операция Pop;
5. Вставка значения х в вершину стека (элемент заталкивается в стек) — операция Push.
Операция Сreate представляет собой примитивный конструктор, операция IsNull — индикатор, GetTop — селектор, операции Push и Pop — модификаторы.
Хотя семантика этих операций интуитивно понятна из их неформального описания, перед тем, как начать реализацию, рассмотрим формальную спецификацию каждой операции, применив алгебраический подход [2].
Спецификацию каждой операции представим в виде:
операция: множество входных данных ® множество выходных данных
Множество входных или выходных данных задается с помощью указания их типа, при этом, если операция имеет несколько аргументов или результатов, при задании спецификации будет использоваться символ Ä, обозначающий декартово произведение множеств.
Пусть стек состоит изэлементов типа α. Введем новый типданных Stack of αº Stack (α). Непустой стек обозначим как Non _ null _ stack.
Базовый набор операций определяется так:
1. Create: ® Stack (α);
2. IsNull: Stack (α) ® Boolean;
3. GetTop: Non_null_stack (α) ® α;
4. Pop: Non_null_stack (α) ® Stack (α);
5. Push: α Ä Stack (α) ® Stack (α)
Дополним данное определение набором аксиом, которые справедливы для вышеуказанных операций. Пусть p — значение типа α; s —stack (α):
A1. IsNull (Create) = true;
A2. IsNull (Push (p, s)) = false;
A3. GetTop (Push (p, s)) = p;
A4. Pop (Push (p, s)) = s;
A5. Push (GetTop (s), Pop (s)) = s.
Часто при определении стека вместо операции Pop используют операцию, совмещающую результат действия GetTop и Pop. Обозначим такую операцию Pop 2. Тогда
Pop2: Non_null_stack (α) ® α Ä Stack (α).
Функциональная спецификация очереди
Очередь(queue) - это другой специальный тип списка, где элементы вставляются в конец списка, называемый хвостом (tail), а удаляются из начала списка, называемого головой (head). Очереди также называют "списками типа FIFO" (аббревиатура FIFO расшифровывается как first-in-first-out: первым вошел — первым вышел). Операции, выполняемые с очередями, аналогичны операциям со стеками.
К сожалению, для обозначения операций нет стандартных устоявшихся названий. Воспользуемся обозначениями, которые предлагаются в книгах Ахо и Седжвика.
1. Создание пустой очереди — операция create
2. Проверка очереди на наличие хотя бы одного элемента — предикат (логическая функция) isnull.
3. Вставка значения p в конец (хвост) очереди — операция enqueue;
4. Удаление элемента из начала (головы) непустой очереди с получением его значения — операция dequeue. Эту операцию можно рассматривать и как две различные операции: head — получение первого элемента из головы очереди и собственно dequeue — удаление элемента.
Формальная спецификация операций для очереди из элементов типа α (Queue of αº Queue (α)) [2] выполняется аналогично спецификации стека.
1. Create: ® Null_queue (α);
2. IsNull: Queue (α) ® Boolean;
3. EnQueue: Queue (α) Ä α ® Queue (α);
4. GetHead: Non_null_queue (α) ® α;
5. DeQueue: Non_null_queue (α) ® Queue (α).
Приведем набор аксиом, справедливых для данных операций. Пусть p — значение типа α; q —queue (α):
A1. IsNull (Create) = true;
A2. IsNull (EnQueue (q, p)) = false;
A3. GetHead (EnQueue (q, p)) =
если IsNull (q) то p иначе Head (q);
A4. DeQueue (EnQueue (q, p)) =
если IsNull(q) то Create иначе EnQueue(DeQueue(q),p).
Деки
Иногда используют списки, в которых вставка и удаление элементов выполняются с обоих концов. Такой список называется деком. (сокращение от английского double ended queue- о чередь с двумя концами).
Дек представляет собой универсальную структуру данных, которая может функционировать и как стек, и как очередь. В качестве частных случаев различают деки с ограниченным вводом, в которых на одном конце не разрешена вставка, и деки с ограниченным выводом, где не разрешено удаление на одном из концов.
Формальную спецификацию дека можно выполнить аналогично стеку или очереди.
|
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!