Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
48
Добавлен:
23.03.2015
Размер:
396 Кб
Скачать

4.8. Упорядоченные списки

В качестве последнего примера рассмотрим списки, в которых элементы отсортированы по доступу. Спецификация такого типа представлена на рис. 4.16. Упорядоченные списки — изменяемые и параметризуемы по типу, который должен быть полностью упо­рядочен его операциями It и equal. Итак, упорядоченные списки olist не содержат дублирующих друг друга элементов.

olist == data type [t: type] is create, addel, remel, isJn, empty, least Requires t имеет операции

It, equal: proctype (t, t) returns (bool), которые определяют упорядочение t Описание

Упорядоченные списки olist — изменяемые списки элементов. Операции addel и remel модифицируют списки. Каждый элемент упорядоченного списка отли­чается от остальных (как определяется t$equal). Операция least возвращает наи­меньший элемент olist (как определяется t$lt). Операции create == proc ( ) returns (olist [t])

effects Возвращает новый, пустой список. addel = proc (s: olist [t], х: t) requires ~ is.in (s, х) modifies s cHects Вставляет х в s. remel = proc (s: olist [t], х: t) requires isJn (s, х) modifies s effects Удаляет х из s. isJn = proc (s: olist [t], х:) returns (bool)

effects Возвращает значение true, если s содержит элемент равный х (ис­пользуется t$equal), в противном случае возвращает значение false. empty == proc (s: olist [t]) returns (bool)

effects Возвращает значение true, если s не содержит элементов, и зна­чение false — в противном случае. least = proc (s: olist [t]) returns (t) requires^ empty (s). effects Возвращает элемент e из s, такой, что в s не существует элемента,

меньшего е (как определяется t$lt). end olist Рис. 4.16. Спецификация типа данных olist,

Соседние файлы в папке POSIBNIK