34
for (int i = 0; i < s.Length; i++)
{
result += Convert.ToInt32(s[i]) * i;
result %= sizeTable;
}
return result;
}
Выбор хеш-функции является самой сложной проблемой хеширования.
В этой функции с целью исключения коллизии для телефонных номеров (на-
пример, 123456 и 654321) суммируются коды цифр с весами, равными поряд-
ковому номеру цифры.
Операции с хеш-таблицей:
−
добавление элемента в таблицу;
−
удаление элемента из таблицы;
− поиск элемента в таблице.
При выполнении этих операций могут возникать
коллизии и поэтому
необходимо предусмотреть метод их разрешения. Будем использовать метод
открытой адресации с линейным поиском. Из дальнейшего станет ясно, что
для реализации функции поиска необходимо
наличие у элемента хеш-
таблицы признаков посещаемости и занятости.
Таким образом,
структура
элемента хеш-таблицы должна иметь следующий вид:
Листинг 2.12. Структура элемента в хеш-таблице
struct THashItem
{
public TInfo info;
public bool empty; //
признак занятости
public bool visit; //
признак посещения
}
Создадим класс для работы с хеш-таблицей.
Do'stlaringiz bilan baham: