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

Хеширование, вывести номер стэка (bucket) с максимальным значением - C++

Восстановить пароль Регистрация
 
VanHalen
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 5
14.05.2014, 19:00     Хеширование, вывести номер стэка (bucket) с максимальным значением #1
Короче, вот код:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//Хеширование
#include <iostream>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
struct Node
{
    int bucket;
    int key;
    Node *Next;
};
 
Node **Table;
int size;
Node *insertNode(int key);
int myhash(int key);
Node *Buckets(int key);
Node *max_bucket(int key);
 
int myhash(int key) 
{
    return (key % size);
}
 
int main()
{
    srand((unsigned)time(NULL));
    int i, *a, maxnum;
    cout << "Insert the number of elements: ";
    cin >> maxnum;
    cout << "Insert hash-table size: ";
    cin >> size;
    a = new int[maxnum];
    Table = new Node*[size];
 
    for (i = 0; i<size; i++)
        Table[i] = NULL; 
    for (i = 0; i<maxnum; i++)
        a[i] = rand() % 100; 
    for (i = 0; i<maxnum; i++) 
    {
        cout << a[i];
        cout << ' ';
    }
    for (i = 0; i < maxnum; i++) 
    {
        insertNode(a[i]);
    }
    for (i = 0; i < maxnum; i++) 
    {
        Buckets(a[i]);      
    }
    
    for (i = 0; i < size; i++)
    {
        max_bucket(a[i]);
    }
    system("PAUSE");
}
 
Node *insertNode(int key) 
{
    Node*p, *p0;
    int bucket;
    bucket = myhash(key);
    if ((p = new Node) == 0) 
    {
        fprintf(stderr, "Нехватка памяти (insertNode)\n");
        exit(1);
    }
    p0 = Table[bucket];
    Table[bucket] = p;
    p->Next = p0;
    p->key = key;
    return p;
}
 
Node *Buckets(int key)
{
    int bucket;
    bucket = (myhash(key));     
    cout << "\nBucket: " << bucket <<' '<< endl;    
    return 0;   
}
 
Node *max_bucket(int key)
{   
    Node *p;
    int bucket;
    bucket = (myhash(key));
    p = Table[bucket];
    while (p!=NULL)
    {
        if (p->bucket > bucket) //Если рассматриваемый элемент > начального
            bucket = p->bucket;
        p = p->Next;
    }   
    cout << "Max bucket: " << bucket << endl;
    return 0;
}
Надо вывести номер стэка (bucket) с максимальным значением. Номера самих стэков выводит, но задание не выполняет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 19:00     Хеширование, вывести номер стэка (bucket) с максимальным значением
Посмотрите здесь:

C++ Найти номера всех элементов с максимальным значением
C++ Определить и вывести на экран сумму отрицательных элементов в каждом столбце. Определить столбец с максимальным по модулю значением этой суммы и вывес
Массив: Проверить, есть ли два элемента среди отрицательных с максимальным значением? C++
C++ Стэк. Нужно определить, сколько элементов стэка, начиная с вершины, находятся до элемента с максимальным значениям
C++ Заменить все минимальные элементы вектора максимальным значением его элементов
Количество элементов массива с максимальным значением C++
Удалить из последовательности все члены с максимальным значением C++
C++ Посчитать сумму элементов столбца, в котором размещен элемент с максимальным значением

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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