Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
Selected Reading
C++ Program to Implement Hash Tables Chaining with List Heads
A hash table is a data structure which is used to store key-value pairs. Hash function is used by hash table to compute an index into an array in which an element will be inserted or searched.
This is a C++ Program to Implement Hash Tables Chaining with List Heads.
Algorithm
For insert:
Begin Declare function Insert(int k, int v) int hash_v = HashFunc(k) if (ht[hash_v] == NULL) ht[hash_v] = new ListHead(k, v) else ListHead *en = ht[hash_v] while (en->n != NULL) en = en->n if (en->k == k) en->v = v else en->n= new ListHead(k, v) End.
For Seach a key value:
Begin Decla Function SearchKey(int k) int hash_v = HashFunc(k) if (ht[hash_v] == NULL) return -1 else ListHead *en = ht[hash_v] while (en != NULL and en->k != k) en= en->n if (en== NULL) return -1 else return en->v End
For Delete:
Begin Declare Function Remove(int k) int hash_v = HashFunc(k) if (ht[hash_v] != NULL) ListHead *en = ht[hash_v]; ListHead *p= NULL; while (en->n != NULL and en->k != k) p = en en = en->n if (en->k== k) if (p == NULL) ListHead *n= en->n delete en; ht[hash_v] = n else ListHead *n= en->n delete en p->n = n End.
Example Code
#includeusing namespace std; const int T_S = 20; class ListHead { public: int k, v; ListHead *n; ListHead(int k, int v) { this->k = k; this->v = v; this->n = NULL; } }; class HashMapTable { private: ListHead **ht; public: HashMapTable() { ht = new ListHead*[T_S]; for (int i = 0; i n != NULL) en = en->n; if (en->k == k) en->v = v; else en->n= new ListHead(k, v); } } int SearchKey(int k) { int hash_v = HashFunc(k); if (ht[hash_v] == NULL) return -1; else { ListHead *en = ht[hash_v]; while (en != NULL && en->k != k) en= en->n; if (en == NULL) return -1; else return en->v; } } void Remove(int k) { int hash_v = HashFunc(k); if (ht[hash_v] != NULL) { ListHead *en = ht[hash_v]; ListHead *p = NULL; while (en->n != NULL && en->k != k) { p = en; en = en->n; } if (en->k == k) { if (p == NULL) { ListHead *n= en->n; delete en; ht[hash_v] = n; } else { ListHead *n = en->n; delete en; p->n = n; } } } } ~HashMapTable() { delete[] ht; } } }; int main() { HashMapTable hash; int k, v; int c; while(1) { cout>c; switch(c) { case 1: cout>v; cout>k; hash.Insert(k, v); break; case 2: cout>k; if (hash.SearchKey(k) == -1) cout>k; if (hash.SearchKey(k) == -1) cout
Output
1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 1 Enter element to be inserted: 1 Enter key at which element to be inserted: 2 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 1 Enter element to be inserted: 10 Enter key at which element to be inserted: 1 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 1 Enter element to be inserted: 7 Enter key at which element to be inserted: 6 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 1 Enter element to be inserted: 12 Enter key at which element to be inserted: 4 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 30 Enter correct option 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 1 Enter element to be inserted: 30 Enter key at which element to be inserted: 5 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 2 Enter key of the element to be searched: 6 Elements at key 6 : 7 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 3 Enter key of the element to be deleted: 1 Entry Removed 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 2 Enter key of the element to be searched: 6 Elements at key 6 : 7 1.Insert element into the table 2.Search element from the key 3.Delete element at a key 4.Exit Enter your choice: 4
Advertisements
