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

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,

Соседние файлы в папке Б. Лисков