Cтраница 4
Если на рис. 10.1.1 граница между подсписками и локальными областями переполнения фиксирована, то на рис. 10.1.2 она устанавливается между двумя областями в зависимости от коэффициента заполнения. [46]
Рассмотрим пример, иллюстрирующий действия с подсписками. [47]
Нам уже знакома организация полуплотного списка и подсписка. [48]
Повторите упражнение 10.10 для ОПОЯГОП, если подсписки не упорядочены. [49]
![]() |
Добавление в полу - [ IMAGE ] Удаление запи - [ IMAGE ] Г. 5. Полу. [50] |
Чтобы удалить запись с ключом Джейл из подсписка, пока-занного на рис. 5.1.4, нужно сначала ее найти, а затем заполнить образовавшуюся пустую ячейку, сдвинув следующие за ней записи вверх. [51]
Сначала проверяется наличие свободного места в основном подсписке. Если оно имеется, то в него помещается запись. В зависимости от формата подсписка при этом может потребоваться реорганизация или сжатие последнего. [52]
Если элементами списка являются не атомы, а подсписки, то на месте атомов будут находится первые ячейки подсписков. [53]
Переполнение: если область, выделенная спискам или подспискам, полностью заполнена, то как получить новую область. [54]
Объявление аггауЗ имеет три начальные значения в двух подсписках. Подсписок для первой строки явно присваивает начальные значения 1 и 2 первым двум элементам первой строки. Третий элемент автоматически получает нулевое начальное значение. Подсписок для второй строки явно присваивает начальное значение 4 первому элементу. Остальные два элемента автоматически получают нулевые начальные значения. [55]
Как уже отмечалось, файл справочника требует, чтобы подсписки были плотными и упорядоченными, но мы можем поддерживать неплотные подсписки. Сохраняется ли необходимость в их упорядоченности. [56]
Рассматриваемая в настоящем разделе структура позволяет улучшить отображение в подсписки, состоящие из одной ячейки, с переполнением, что несколько компенсирует недостатки этого метода. Вспомним, как, уменьшая число ячеек в подсписке до одной, мы снижаем потери, которые возникают из-за наличия пустых файлов. Но даже в тех случаях, когда подфайл пустой, в подсписке должна быть по крайней мере одна начальная ячейка файла. [57]
![]() |
Пример списка и его структуры. [58] |
Например, на рис. 5.8 показаны список и его подсписки. Здесь Т представляет собой некоторое закодированное значение типа. Список ( или подсписок) обычно задается своим первым адресом. [59]
Второй случай - вновь вводимая запись не принадлежит собственно подсписку и должна быть размещена в цепочке переполнения данного подфайла. [60]