Try
[알고리즘/자료구조] 해시 테이블(Hash Table) 본문
해시 테이블
해시 테이블(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, 123, 82374); set_HashTable(HT, 13, 756); set_HashTable(HT, 193, 65); set_HashTable(HT, 3583, 91); set_HashTable(HT, 167, 107); set_HashTable(HT, 33, 0); set_HashTable(HT, 423, 3); set_HashTable(HT, 1654, 568); set_HashTable(HT, 773, 15234); 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
'Algorithm > Algorithm 기초' 카테고리의 다른 글
[알고리즘/자료구조] 그래프 (Graph) -2- 인접행렬 구현 (0) | 2018.12.09 |
---|---|
[알고리즘/자료구조] 그래프 (Graph) -1- 인접리스트 구현 (0) | 2018.12.09 |
[알고리즘/자료구조] 우선순위 큐 (PriorityQueue) (0) | 2018.11.29 |
[알고리즘/자료구조] 힙 (Heap) (0) | 2018.11.29 |
[알고리즘/자료구조] 이진 탐색 트리 (Binary Search Tree) (0) | 2018.11.29 |
Comments