Иллюстрированный самоучитель по практике программирования

Создание структуры данных в языке С

Нам потребуется хэш-функция для префиксов, которые являются массивами строк. Нетрудно преобразовать хэш-функцию из главы 2, сделав цикл по строкам в массиве, таким образом хэшируя конкатенацию этих строк:

Иллюстрированный самоучитель по практике программирования › Проектирование и реализация › Создание структуры данных в языке С

Иллюстрированный самоучитель по практике программирования › Проектирование и реализация › Создание структуры данных в языке С

Выполнив схожим образом модификацию алгоритма lookup, мы завершим реализацию хэш-таблицы:

Иллюстрированный самоучитель по практике программирования › Проектирование и реализация › Создание структуры данных в языке С

Обратите внимание на то, что lookup не создает копии входящей строки при создании нового состояния, просто в sp › pref [ ] сохраняются указатели. Те, кто использует вызов lookup, должны гарантировать, что впоследствии данные изменены не будут. Например, если строки находятся в буфере ввода-вывода, то перед тем, как вызвать lookup, надо сделать их копию; в противном случае следующие куски вводимого текста могут перезаписать данные, на которые ссылается хэш-таблица. Необходимость решать, кто же владеет совместно используемыми ресурсами, возникает достаточно часто. Эту тему мы подробно рассмотрим в следующей главе.

Теперь нам надо прочитать файл и создать хэш-таблицу:

Иллюстрированный самоучитель по практике программирования › Проектирование и реализация › Создание структуры данных в языке С

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.