2016-09-14 13 views
0

Я изучаю программирование, и в школьной книге указано, что заданный ключ x, hashtable A [] и хеш-функция h() ключ x хранится в A [h (x) - 1] (с реализацией C++). Однако, используя в качестве хэш-функции функцию h (x) = xmodM, где M - длина хэш-таблицы, я не получаю, где хранятся ключи с mod 0. Например, если M = 10 и x = 60, где я должен хранить значение ключа? Спасибо заранее!Хеш-функции и хранение в хэш-таблице

+1

В книге, которую вы читаете, упоминаются хэш-функции типа 'h (x) = x mod M'? Книга, вероятно, предполагает, что хэш-функция возвращает значение в диапазоне от 1 до M (включительно). –

+0

Собственно, это так! Вот почему я смущен. – gdaras

+0

Возможно, найдется какая-нибудь другая книга? :) –

ответ

1

Это зависит от того, как определяется h(), если он принимает значения, начинающиеся с 1, то именно поэтому у вас есть -1 в этой формуле: h(x)-1. Массивы в C++ индексируются начиная с 0.

Если вы вычислили напоминание о делении 60 на 10 в C++, вы получите значение 0 (60 % 10 = 0). В этом случае нет смысла вычитать -1.

+0

Спасибо за ответ, я не мог согласиться больше. Дело в том, что книга становится немного запутанной, когда дело доходит до этого конкретного примера, и именно поэтому я спросил – gdaras