Содержание‎ > ‎Школа‎ > ‎Pascal‎ > ‎

Хеш-таблица для целых чисел

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