Recent Posts
«   2025/01   »
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
Today
Total
관리 메뉴

Try

[알고리즘/자료구조] 해시 테이블(Hash Table) 본문

Algorithm/Algorithm 기초

[알고리즘/자료구조] 해시 테이블(Hash Table)

HAS3ONG 2018. 11. 29. 03:18

해시 테이블



해시 테이블(hash table), 해시 맵(hash map), 해시 표는 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조이다. 해시 테이블은 해시 함수를 사용하여 색인(index)을 버킷(bucket)이나 슬롯(slot)의 배열로 계산한다.




소스




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
#include <stdio.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class HashNode
{
public:
   int key;
   int value;
};
class HashTable
{
public:
   int size;
   HashNode* Table;
 
   HashTable* create_HashTable(int initialize);
   void set_HashTable(HashTable* HT, int key, int value);
   int get_HashTable(HashTable* HT, int key);
   int Hash(int key, int size);
};
 
HashTable* create_HashTable(int initialize)
{
   HashTable* HT = (HashTable*)malloc(sizeof(HashTable));
   HT -> Table = (HashNode*)malloc(sizeof(HashNode) * initialize);
   HT -> size = initialize;
 
   return HT;
}
 
int Hash(int key, int size)
{
    int address = key % size;
    return address;
}
 
void set_HashTable(HashTable* HT, int key, int value)
{
   int address = Hash(key, HT -> size);
 
   HT -> Table[address].key = key;
   HT -> Table[address].value = value;
}
 
int get_HashTable(HashTable* HT, int key)
{
   int address = Hash(key, HT -> size);
 
   return HT -> Table[address].value;
}
 
void main( void )
{
   HashTable* HT = create_HashTable(1323);
 
   set_HashTable(HT, 12382374);
   set_HashTable(HT, 13756);
   set_HashTable(HT, 19365);
   set_HashTable(HT, 358391);
   set_HashTable(HT, 167107);
   set_HashTable(HT, 330);
   set_HashTable(HT, 4233);
   set_HashTable(HT, 1654568);
   set_HashTable(HT, 77315234);
 
   cout << " Key : [13] Value : [" << get_HashTable(HT,13<<"]" << endl;
   cout << " Key : [33] Value : [" << get_HashTable(HT,33<<"]" << endl;
   cout << " Key : [123] Value : [" << get_HashTable(HT,123<<"]" << endl;
   cout << " Key : [167] Value : [" << get_HashTable(HT,167<<"]" << endl;
   cout << " Key : [193] Value : [" << get_HashTable(HT,193<<"]" << endl;
   cout << " Key : [423] Value : [" << get_HashTable(HT,423<<"]" << endl;
   cout << " Key : [773] Value : [" << get_HashTable(HT,773<<"]" << endl;
   cout << " Key : [1654] Value : [" << get_HashTable(HT,1654<<"]" << endl;
   cout << " Key : [3583] Value : [" << get_HashTable(HT,3583<<"]" << endl;
 
   getch();
}
cs






결과화면




출처

위키피디아

https://en.wikipedia.org/wiki/Hash_table


Comments