- Задание на 3
- procedure init(var s : TSet);
- Обнуляет все данные
- function add(var s : TSet; v : TData) : Boolean;
- Добавляет элемент в множество (дубликаты не добавляются)
- Если добавить удалось (элемент еще не встречался)
- Возвращает true
- Иначе
- Возвращает false
- function contains(const s : TSet; v : TData) : Boolean;
- Возвращает true, если v содержится в s
- false -- в противном случае
- function size(const s : TSet) : Integer;
- Возвращает количество элементов в множестве
- (Задание на 4) Реализовать с помощью хеш-таблицы
- procedure printAsc(const s : TSet);
- Выводит все элементы множества в любом порядке
- Задание на 5
- function AddSorted(var l : PListItem; v : TData) : Boolean;
- гарантируется, что список l отсортирован
- v добавляется в l, если его там еще нет
- список остается отсортирован
- Если добавить удалось (элемент еще не встречался)
- Возвращает true
- Иначе
- Возвращает false
- ДЗ
- procedure printAsAdded(const s : TSet);
- Выводит все элементы множества в том порядке, в котором они были добавлены (без повторов)
- Для реализации этой процедуры можно дополнить структуру хранения данных следующим образом:
- В записи TSet хранить указатели на первый и последний элементы (по порядку добавления)
- Поддерживать эти указатели в правильном состоянии в функции add
- В записи TListItem хранить, кроме обычного указателя next (следующий в списке), указатель nextAdded (следующий в порядке добавления)
- Присваивать значение этому указателю в функции add
- Чтобы распечатать все элементы, пройти по "списку", начинающемуся в первом по порядку и связанному ссылками nextAdded
|
|