Динамические структуры и абстракции данных, страница 9

Элементы данных, помещаемые в стек, принадлежат заданному пользователем алфавиту.

При выборке Извлечь(s) определяет и удаляет из стека s последний поступивший в него элемент, а при записи Положить(s,A) добавляет элемент A на вершину стека s. Операция Просмотреть(s) считывает и возвращает значение элемента, находящегося на вершине стека s. Операция Элементов(s) возвращает число элементов в стеке. Операция Пуст(s) возвращает значение True, если стек s пуст, False в противном случае. Операция Опустошить(s) опустошает стек s.

Операции Извлечь и Просмотреть в случае пустого стека не могут быть выполнены. Как запись, так и считывание элементов данных в стек осуществляется через его вершину. При реализации стека с помощью списка роль вершины стека выполняет элемент, находящийся в голове списка.

Очередь

Очередь - это абстрактный тип данных, который обеспечивает доступ к данным по принципу FIFO (поступивший первым обслуживается первым).

Элементы данных, помещаемые в очередь, принадлежат заданному пользователем алфавиту.

При выборке Извлечь(q) определяет и удаляет из очереди q элемент, поступивший в неё раньше всех других её элементов, а при записи Положить(q,A) добавляет элемент A в очередь q. Операция Просмотреть(q) считывает и возвращает значение элемента, поступившего в очередь q раньше всех других её элементов. Операция Элементов(q) возвращает число элементов в очереди q. Пуста(q) возвращает значение True, если очередь q пуста, False в противном случае. Операция Опустошить(q) опустошает очередь q.

Операции Извлечь и Просмотреть в случае пустой очереди не могут быть выполнены.

При реализации очереди с помощью списка в качестве места вставки элемента данных в очередь можно выбрать голову списка, тогда в качестве места удаления элемента данных из списка необходимо выбрать последний элемент (хвост) списка. Но можно сделать и, наоборот: при постановке в очередь помещать элемент в конец списка, при извлечении из очереди извлекать элемент из головы списка.

Очередь с приоритетом

Очередь с приоритетом - это абстрактный тип данных, который обеспечивает доступ к данным по принципу: первым обслуживается элемент очереди с самым высоким приоритетом среди элементов очереди. В качестве значения приоритета может выступать любой атрибут элемента.

Элементы данных, помещаемые в очередь, принадлежат заданному пользователем алфавиту.

При выборке Извлечь(q) определяет и удаляет из очереди q элемент, имеющий самый высокий приоритет среди всех других её элементов, а при записи Положить(q,A) добавляет элемент A в очередь q. Операция Просмотреть(q) считывает и возвращает значение элемента, имеющего самый высокий приоритет среди всех других элементов очереди q. Пуста(q) возвращает значение True, если очередь q пуста, False в противном случае. Операция Элементов(q) возвращает число элементов в очереди q. Операция Опустошить(q) опустошает очередь q.

Операции Извлечь и Положить в случае пустой очереди не могут быть выполнены.

При реализации очереди с помощью списка в качестве места вставки элемента данных в очередь можно выбрать голову списка. В качестве значения приоритета элемента может быть взято само значение элемента.

Контрольные вопросы

1.  Что такое абстрактный тип данных ADT?

2.  Из каких разделов состоит спецификация ADT?

3.  Что описывается в каждом из разделов ADT?

4.  Дайте характеристику типу Pointer?

Источники дополнительных сведений

*  А.И. Марченко. Программирование на языке Object Pascal 2.0. - К.: Юниор, 1998. - 304 с., ил.

*  Кэнту М. Delphi 5 для профессионалов. – СПб.: Питер, 2001. – 944 с.: ил.

*  П. Дарахвелидзе, Е. Марков. Программирование в Delphi 4. - СПб.:БХВ - Санкт-Петербург,1999.-864 с., ил.

*  Петр Дарахвелидзе, Евгений Марков. Delphi - среда визуального программирования. СПб.: BHV - Санкт-Петербург, 1996. - 352 с.

*  Джон  Матчо, Дэвид Р. Фолкнер. Delphi. М.: Бином. 1995. -464 с.

*  Джеф Дантеман, Джим Мишел, Дон Тейлор. Программирование в среде Delphi. - К.: НИПФ «ДиаСофтЛтд», 1995. - 608 с.