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