1 / 1 / 6
Регистрация: 12.12.2014
Сообщений: 50
1

Решение коллизий методом открытой адресации(не важно C# или C++)

22.05.2016, 21:46. Показов 1716. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Посмотрите пожалуйста на код. Не могу понять в чем проблема. Алгоритм с книги Т.Кормена ( ссилка - > https://brb.to/texts/other/i48... naliz.html). Потом проверял етот алгоритм -> Хэш-таблица. Он работает правильно. Переписал под свою лабу - коллизии не решаються.
Код:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Hash2
{
    class Program
    {
        static Int32 m = 11;
        static Int32[] hash = new Int32[m];// hash table
        static Int32 c1 = 1, c2 = 3;
        static Int32 m_ = m - 1;
 
        static void Main(string[] args)
        {
            // int []arr = new int[m];
            for (int i = 0; i < hash.Length; i++)
            {
                hash[i] = -1;
            }//-1 = means that item in hash is empty
            HashInsert(10);
            HashInsert(22);
            HashInsert(31);
            HashInsert(4);
            HashInsert(15);
            HashInsert(28);
            HashInsert(17);
            HashInsert(88);
            HashInsert(59);
            Console.Read();
        }
        static Int32 h(Int32 k)//different hash functions
        {
            return k % m;
        }
        static Int32 h_linear(Int32 k, Int32 i)
        {
            return (h(k) + 1) % m;
        }
        static Int32 h_quad(Int32 k, Int32 i)
        {
             return ((h(k) + c1 * i + c2 * i * i) % m);
        }
        static Int32 h2(Int32 k) { return 1 + (k % (m - 1)); }
        static Int32 h_double(Int32 k, Int32 i)
        {
            return (h(k) + i * h2(k)) % m;
        }
        static Int32 HashSearch(Int32 k)
        {
            Int32 i = 0;
            int j = 0;
            do
            {
                j = h_linear(k, i);
                if (hash[j] == k) return j;
                else  i++;
            } while (hash[j] != -1 && i != m);
            return -1;
        }
        static Int32 HashInsert(Int32 k)
        {
            Int32 i = 0;
            do
            {
              int  j = h_linear(k, i);
                {
                    if (hash[j] == -1)
                    {
                        hash[j] = k;
                        Console.WriteLine("index = :" + j+" Value: "+k);
                        return j;
                    }
                    else i++;
                }
            } while (i != m);
            Console.WriteLine("index = : "+-1);
            return -1;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2016, 21:46
Ответы с готовыми решениями:

(Хеширования) Разрешение коллизий при хешировании методом открытой адресации
Доброго времени суток! Программа реализует алгоритм решения коллизий методом открытой адресации....

Решение СЛАУ методом простой итерации или методом Зейделя
Решение СЛАУ методом простоой интерпритации или методом Зейделя. Напишете пожалуйста пример решения

Решение задачи симплексным методом или симплекс таблицами
Ребят спасайте!!!!нужно решение срочно!!!

Сжать XML файл методом Хаффмана или арифметическим методом или методом RLE
Всем привет. На носу сессия, а с последней лабой по ооа и п дела совсем плохи. помогите пожалуйста,...

2
Эксперт .NETАвтор FAQ
10416 / 5146 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.05.2016, 23:16 2
Bar-bar1an,
C#
1
2
3
4
        static Int32 h_linear(Int32 k, Int32 i)
        {
            return (h(k) + 1) % m;
        }
=>
C#
1
2
3
4
        static Int32 h_linear(Int32 k, Int32 i)
        {
            return (h(k) + i) % m;
        }
0
1 / 1 / 6
Регистрация: 12.12.2014
Сообщений: 50
22.05.2016, 23:23  [ТС] 3
Хах. Внимательность творит чудеса) Спасибо)
0
22.05.2016, 23:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2016, 23:23
Помогаю со студенческими работами здесь

Решение уравнения численно, методом Рунге-Кутта, или Эйлера
Подскажите пожалуйста, как решить задачу. Как я понял, нужно всего лишь получить численное решение...

Решение системы линейных уравнений(методом Гаусса,матричным или определетелем)
Народ, помогите вот с этим интересным уравнением. Надо определить альфа, при которой система имеет...

Поиск оптимального значения функции или решение уравнения Методом квадратичной интерполяции
Написал программу, осуществляющую поиск оптимального значения функции или решение уравнения Методом...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru