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

Хэш-таблица - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
aquila
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 4
22.05.2011, 19:36     Хэш-таблица #1
Ребят, помогите, пожалуйста, решить задачу:
Хэш-функция определена как h(k) = k mod 11.
Вводится последовательность N натуральных чисел. Построить хэш-таблицу прямого доступа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2011, 19:36     Хэш-таблица
Посмотрите здесь:

C++ Хэш таблица
Хэш-таблица C++
Хэш-таблица, ошибка C++
Телефонная книжка и хэш-таблица C++
Хэш-таблица C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1004 / 783 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
22.05.2011, 20:07     Хэш-таблица #2
Цитата Сообщение от aquila Посмотреть сообщение
Ребят, помогите, пожалуйста, решить задачу:
Хэш-функция определена как h(k) = k mod 11.
Вводится последовательность N натуральных чисел. Построить хэш-таблицу прямого доступа.
Какой способ разрешения коллизий?
aquila
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 4
22.05.2011, 20:11  [ТС]     Хэш-таблица #3
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Какой способ разрешения коллизий?
Метод цепочек
ValeryLaptev
Эксперт C++
1004 / 783 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
22.05.2011, 21:26     Хэш-таблица #4
Цитата Сообщение от aquila Посмотреть сообщение
Метод цепочек
Ну, если вы это знаете, то у вас не должно быть проблем...
Таблица - массив из 11 указателей.
Указатель - на структуру из числа и указателя.
Объявите сначала структуру.
Потом массив из указателей на такие структуры...
Evredinka
 Аватар для Evredinka
5 / 5 / 1
Регистрация: 13.03.2011
Сообщений: 14
22.05.2011, 21:38     Хэш-таблица #5
ну например так: (закрытая хэш-таблица)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
struct Head  
{
    int data;
};
typedef Head* headptr;
int _tmain(int argc, _TCHAR* argv[])
{
    headptr head[11];
    int i=0, el, ost, time;
 
    for (i=0; i<11; i++)
    {
        head[i]=new Head;
        head[i]->data=-32000;
    }
    for (i=0; i<11; i++)
    {
        cout<<i<<"   "<<head[i]->data<<endl;
    }
    for (int j=0; j<11; j++)    
    {
        cout<<"Vvedite chislo: ";
        cin>>el;
        ost=el%11;
        for (i=0; i<11; i++)
        {
            if ((ost==i)&&(head[i]->data==-32000))
            {
                head[i]->data=el;
                break;
            }
            if ((ost==i)&&(head[i]->data!=-32000))
            {
                time=i;
                while (head[i]->data!=-32000)
                {
                    i++;
                    if (i==11)
                    {i=0;}
                }
                head[i]->data=el;
                i=time;
                break;
                
            }
        }
    }
    for (int i=0; i<11; i++)
    {
        cout<<i<<"   "<<head[i]->data<<endl;
    }
    _getch();
    return 0;
}
Yandex
Объявления
22.05.2011, 21:38     Хэш-таблица
Ответ Создать тему
Опции темы

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