Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
| dron4ik |
18.12.2009 18:20
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: 0 |
Задание. Реализовать метод открытого хеширования. Исходные ключи – любые слова (например – фамилии). Размер хеш-таблицы должен задаваться в программе с помощью константы m. Хеш-функция – такая же, что и в задании 1--->>(((((Для преобразования текстовых ключей в числовые значения использовать суммирование кодов символов текстового ключа: код (End) = код (E) + код (n) + код (d). Преобразование числового кода ключа в значение индекса выполнить с помощью простейшей хеш-функции, которая берет остаток от целочисленного деления кода на размер хеш-таблицы делить надо на константу m))). В случае возникновения конфликта при попытке размещения в таблице нового ключа этот ключ добавляется в конец вспомогательного списка. Это требует включения в каждую ячейку хеш-таблицы двух указателей на начало и конец вспомогательного списка.
Программа должна выполнять следующие действия: • добавление нового ключа в таблицу с подсчетом сделанных при этом сравнений • поиск заданного ключа в таблице с подсчетом сделанных при этом сравнений • вывод текущего состояния таблицы на экран • удаление заданного ключа из таблицы Алгоритм удаления: • вычислить хеш-функцию и организовать поиск удаляемого элемента в таблице • если удаляемый элемент найден в ячейке таблицы, то эта ячейка либо становится пустой (если связанный с ней список пуст), либо в нее записывается значение из первого элемента списка с соответствующим изменением указателей • если удаляемый элемент найден в списке, то производится его удаление с изменением указателей После отладки программы необходимо выполнить ее для разных соотношений числа исходных ключей и размерности таблицы: взять 20 ключей и разместить их поочередно в таблице размерности 9, 17 и 23. Для каждого случая найти суммарное число сравнений, необходимое для размещения ключей и их поиска. Сделать вывод о влиянии размерности таблицы на эффективность поиска. Все работает вроде верно, но когда сдавал преподу он мне сказал ввести ключ var а потом ввести ключ avr//и программа сразу вылетела...препод сказал что у мя чтото с процедурой добавления и проблема с указтелями....ни как не пойму что и как исправить..помогите пожалуйста.( program Work3; |
![]() ![]() |
| dron4ik |
18.12.2009 19:36
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: 0 |
если два ключа добавляются в одну ячейку то один ключ добавляется в ячейку а другой в конец вспомогательного список. как это сделать?
|
dron4ik Реализация Хеш таблицы. 18.12.2009 18:20
volvo Ты при создании нового элемента списка не устанавл... 18.12.2009 18:39
dron4ik А как добавить в конец вспомогательного списка эле... 18.12.2009 19:05
volvo :dry: Что за вспомогательный список? Что где конфл... 18.12.2009 19:32
dron4ik неужели ни кто незнает? 20.12.2009 11:57![]() ![]() |
|
Текстовая версия | 8.12.2025 21:53 |