Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 5

Создание хэш-таблицы

08.03.2015, 23:19. Показов 3181. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать хэш-таблицу. Доступ к данным должен осуществляться с помощью хэш-функции.

Хотелось бы посмотреть примеры и шаблоны подобного создания. Также возникает вопрос. Если доступ должен осуществляться с помощью хэш-функции, значит должен быть определенный файл, откуда это все считывается?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2015, 23:19
Ответы с готовыми решениями:

Создание хэш таблицы
суть проблемы в том, что когда я создал талицу, в самом методе билд если её вывести то все данные верны, но если выводить таблицу функцией...

Создание своей реализации хэш-таблицы
привет. подскажите с чего вообще начать? что использовать?

Создание массива (или хэш-таблицы)
Доброе всем! Может для кого и просто, но уже не соображу) Есть 64 человека. Есть бд. У каждого человека в этой бд есть поля: имя,...

9
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
08.03.2015, 23:37
Nikitka_36, что значит создать? С нуля создать или можно использовать стандартные классы (HashSet или Dictionary)?
Цитата Сообщение от Nikitka_36 Посмотреть сообщение
Также возникает вопрос. Если доступ должен осуществляться с помощью хэш-функции, значит должен быть определенный файл, откуда это все считывается?
Хеш функция считается на основании данных. Например если это строка, то хеш-функцией может быть сумма всех букв.
0
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 5
08.03.2015, 23:48  [ТС]
Можно использовать стандартные классы, конечно.

Storm23, полностью задание выглядит так:
Хеш-таблица. Реализовать класс хеш-таблицы. Доступ к данным должен осуществляться с помощью хеш-функции. Методы/свойства Put, Get, Empty, Count, Keys и др.

Возможно, я неправильно понял, но мы имеем какой-либо файл, из которого нужно получить хэш-таблицу с помощью хэш-функции.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.03.2015, 00:08
Nikitka_36, Делать полноценную хеш-таблицу довольно накладно.
Но вот простенький вариант, без разрешения коллизий:
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
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApplication170
{
    class Program
    {
        static void Main(string[] args)
        {
 
            var ht = new MyHashTable<int, string>(11);
            ht.Put(23, "aaaa");
            ht.Put(13, "bbb");
            ht.Put(2342, "cccc");
 
            var v = ht.Get(13);
            Console.WriteLine(v);
 
            var count = ht.Count;
            Console.WriteLine(count);
 
            var empty = ht.IsEmpty;
            Console.WriteLine(empty);
 
            var keys = ht.Keys;
            Console.WriteLine(string.Join(" ", keys));
 
            Console.ReadLine();
        }
    }
 
    class MyHashTable<K,V>
    {
        private List<Tuple<K,V>> list;
 
        public MyHashTable(int capacity)
        {
            list = new List<Tuple<K, V>>(capacity);
            for (int i = 0; i < capacity; i++)
                list.Add(null);
        }
 
        public void Put(K key, V val)
        {
            var i = GetIndex(key);
            list[i] = new Tuple<K, V>(key, val);
        }
 
        public V Get(K key)
        {
            var i = GetIndex(key);
            var tuple = list[i];
            if (tuple == null || !tuple.Item1.Equals(key))
                throw new Exception("Key is not found!");
 
            return tuple.Item2;
        }
 
        public int Count
        {
            get { return list.Count(t => t != null); }
        }
 
        public bool IsEmpty
        {
            get { return Count == 0; }
        }
 
        public IEnumerable<K> Keys
        {
            get { return list.Where(t => t != null).Select(t => t.Item1); }
        }
 
        int GetIndex(K key)
        {
            return key.GetHashCode() % list.Count;
        }
    }
}
1
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 5
09.03.2015, 00:27  [ТС]
Storm23, спасибо огромное!
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.03.2015, 00:31
А, я Delete забыл сделать. Ну, думаю справитесь сами.
0
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 5
09.03.2015, 01:28  [ТС]
Storm23, да, допишу.

Еще пара вопросов.

1. Файл необязательно создавать? Можно считывать с обычной строки?
2. Хэш-функция находится в классе MyHashTable? И, насколько я знаю, функции имеют свои названия, например: rs, js и другие. Эта имеет какое-то?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.03.2015, 01:39
Цитата Сообщение от Nikitka_36 Посмотреть сообщение
1. Файл необязательно создавать? Можно считывать с обычной строки?
Я вообще не понимаю о каком файле вы говорите. Где в тексте вашего задания вообще слово файл?

Цитата Сообщение от Nikitka_36 Посмотреть сообщение
2. Хэш-функция находится в классе MyHashTable? И, насколько я знаю, функции имеют свои названия, например: rs, js и другие. Эта имеет какое-то?
В .NET все классы уже имеют готовый встроенный метод, который возвращает хеш-код данного объекта. Это метод называется GetHashCode().
Я его вызываю в методе GetIndex.
0
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 5
09.03.2015, 01:52  [ТС]
Storm23, его нет. Но если я захочу считывать что-либо с текстового файла, сложно ли оптимизировать код?

Сейчас приступил к коду, не понял, что за Delete. Это метод? Просто в задании такого нет.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.03.2015, 02:00
Цитата Сообщение от Nikitka_36 Посмотреть сообщение
Но если я захочу считывать что-либо с текстового файла, сложно ли оптимизировать код?
Оптимизация кода это увеличение его быстродействия. Какое это отношение имеет к чтению файлов?
Если вам нужно читать данные из файла - да можно читать. Класс от этого не меняется. Ему все равно откуда вы будете пихать в него данные.
Цитата Сообщение от Nikitka_36 Посмотреть сообщение
Сейчас приступил к коду, не понял, что за Delete. Это метод? Просто в задании такого нет.
Да, в задании нет. Но на практике в хеш-таблицу нужно не только добавлять элементы, но и удалять. Хотя, если вам не нужно, то не делайте
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2015, 02:00
Помогаю со студенческими работами здесь

Хэш-таблицы
Могут ли в таблице ключей(исходной) быть одинаковые элементы? Имеет ли значение отсортирована исходная таблица или нет?

ХЭШ таблицы на С++
Всем привет, кто-нить знает что-нибудь по вот такой задаче (цитирую условие): &quot;Реализовать и протестировать конкретный класс...

Хэш-таблицы
Создать структуру данных для хэш-таблицы и определить для неё следующие операции: • Вставка нового ключа и значения. При этом при...

ХЭШ ТАБЛИЦЫ НА С++
всем привет, кто-нить знает что-нибудь по вот такой задаче (цитирую условие): &quot;Реализовать и протестировать конкретный класс...

Хэш-таблицы
Добрый вечер! Задание такое: Способ вычисления адреса по ключу - расщепление ключа 2 Метод заключается в переводе всех символов...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru