Форум программистов, компьютерный форум CyberForum.ru

хеш функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
mshurshikov
Сообщений: n/a
09.05.2010, 22:46     хеш функции #1
здраствуйте!
собственно проблема в хеш функциях. не могу разобратся в принципе (гугль и книги читал). сам принцип хеширования понятен, а вот его программная реализация не очень.
например если у меня есть ряд целых чисел и мне надо распределить эти числа по блокам. то для каждого блока нужен массив?
условие задачи таково:
Дан ряд чисел, использую хэш функции распределить это число по n блокам. В каждом блоке должен быть организован стэк или очередь. Для характеристики этой структуры надо сформировать массив указателей на начало блоков. Производить такие действия с блоками: поиск элементов в блоке, вставка, удаление элемента из блока.
меня интересует именно как сформировать эти самые блоки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2010, 22:46     хеш функции
Посмотрите здесь:

Хеш-таблица C++
C++ Хеш таблица
хеш-таблица C++
C++ Оценка хеш-функции
C++ Хеш-функции. Метод открытого хеширования
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
10.05.2010, 11:04     хеш функции #2
В простом варианте каждый блок - это динамический массив
У тебя в задании написано что каждый блок - это стек или очередь
Вот и делай стек или очередь
То есть в данном случае у тебя будет что блок -
это некая структура, которая содержит ссылку на такую же структуру
или NULL, если ссылка последняя
Ну и разумеется само число

C
1
2
3
4
struct block_t {
    struct block_t *next;
    int number;
}
mshurshikov
Сообщений: n/a
10.05.2010, 14:52     хеш функции #3
а количество структур равно количеству блоков так?
и в структуре помимо указателя содержатся числа которые попадают под категорию разделения.
я правильно понял?
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
10.05.2010, 21:09     хеш функции #4
да - правильно
неужели очереди и стеки не изучали ?

начальный ход
имеем массив указателей struct block_t *hash_root;
хеш-функция должна выдавать значения от 0 до n-1
в зависимости от этого переходим в соответствующий блок

C
1
2
3
4
5
6
int hash_value= hash_func( some_number );
if ( hash_root[hash_value] == NULL ) {
   // цепочка блоков пуста
} else {
   // оба на - что-то есть
}
Yandex
Объявления
10.05.2010, 21:09     хеш функции
Ответ Создать тему
Опции темы

Текущее время: 15:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru