Я пытаюсь научиться создавать Hashtables в программировании на языке C. Моя программа просто базовая, где пользователь просто вводит в заданное слово, представляющее идентификатор ошибки, и подпрограмма в ответ на это выполняется.Как создать таблицу хэшей в C?
Теперь я хочу создать хеш-таблицу, которая могла бы соответствовать этим ошибкам, введенным пользователем с ошибками, хранящимися в хеш-таблице. Я написал хэш-функцию для кода, но то, что я не понимаю, создает остальную часть таблицы. Вот как создать запись, удалить ее и т. Д. В хэш-таблице.
хэш-функция Я создал выглядит примерно так и основывается на следующей логике:
- Типы пользователей в первые три буквы ряда (для бывших: один, два, Чет, и т.д.) ,
- Значение Ascii каждой буквы вычитается со значением ASCII 65.
вычитаемых значение последней буквы умножается на число 26, а все остальные цифры, полученные на стадии 2, добавляют дать результат.
int hashfunc(char letter){ int answer; if (strlen(letter)<=3) { printf('Invalid'); return -1; } answer = (letter[0] -65)+(letter[1]-65) +(letter[2]-65)*26; if (result<0) { printf('Error'); } return answer; }
Я не уверен, что если эта логика будет работать, но я хочу, чтобы дать ему попробовать. Теперь я не понимаю, как использовать эту хэш-функцию и создать таблицу.
Прошу совета.
Покажите, что вы пробовали, пропустите менее подходящий фон. Сделайте еще несколько исследований. –
Возьмите ключ, примените функцию хэша для ограничения своего диапазона, используйте ключ для доступа к массиву записей. Если происходит столкновение, либо используйте связанный список в каждом местоположении, либо смещайте его через хэш-таблицу на фиксированную сумму до тех пор, пока конфликт не будет разрешен. –
Мы не можем вам помочь, если вы не покажете нам, что вы пробовали, и не объясните, что вы не понимаете о том, что вы пробовали. Пожалуйста, изучите, как создать MCVE ([Как создать минимальный, полный и проверенный пример?] (Http://stackoverflow.com/help/mcve)) или SSCCE ([Short, Self-Contained, Correct Example] (http://sscce.org/)) - два имени и ссылки для одной и той же базовой идеи. –