ключем пошуку, гешованим у 0001, а нижній – два записи з геш-
кодами 1001 і 1100.
Необхідно звернути увагу на одиниці, поставлені в прямокутних
«виступах», якими позначено кожен блок на рис. 70. Це число, яке
могло б дійсно бути присутнім у заголовку блока, вказує на те,
скільки бітів послідовності, що повертається геш-функцією,
використовується для визначення приналежності запису біжучому
блокові. У ситуації, розглянутій у прикладі 67, для всіх блоків і
записів береться до уваги тільки один біт, однак, як буде
проілюстровано нижче, зі збільшенням об’єму таблиці це значення
для різних блоків може змінюватись. Іншими словами, розмір
масиву сегментів визначається максимальною кількістю бітів, які
використано в даний момент (для деяких блоків, можливо,
необхідна менша кількість бітів).
16.6.Вставляння записів у геш-таблицю, що розширюється
Початкові фази процесів вставляння записів у геш-таблицю, що
розширюється, і статичну геш-таблицю за суттю збігаються. Щоб
здійснити вставку запису з ключем К, необхідно обчислити
значення функції h(K), виокремити з отриманої послідовності
перших і бітів і звернутися до елемента масиву сегментів, що
володіють індексом, який дорівнює значенню цих бітів. Конкретну
величину і визначити легко, оскільки вона зберігається як
невід’ємна частина структури геш-таблиці.
Покажчик, який зберігається у відшуканому елементі масиву
сегментів, посилається на деякий блок В. Якщо блок містить вільну
область достатньої довжини, то запис вставляється і процес
успішно завершується. Якщо ж такої області у блоці В немає, то
існують дві альтернативи подальших дій, і вибір однієї з них
залежить від величини j, що визначає, яку кількість бітів
послідовності, поверненої геш-функцією, використано для
визначення приналежності запису блока В (нагадаємо, що саме це
значення вказане в прямокутних «виступах», якими позначено
кожен блок на рис. 70-72).
1. Якщо j<і, то масив сегментів не потребує модифікації.
Достатньо виконати наступне:
а) розділити блок В на два блоки;
184