Skip to content
This repository has been archived by the owner on Oct 7, 2019. It is now read-only.

Commit

Permalink
Merge pull request #191 from MohamedKamal98/master
Browse files Browse the repository at this point in the history
Create a Hash Map DS example
  • Loading branch information
ankitjena authored Oct 12, 2018
2 parents b17081b + 8828b44 commit 195f01d
Show file tree
Hide file tree
Showing 3 changed files with 157 additions and 0 deletions.
72 changes: 72 additions & 0 deletions data_structures/Hash Map/HashMap.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#include "HashMap.h"



HashMap::HashMap()
{
table = new HashEntry *[TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; i++)
{
table[i] = NULL;
}
}

int HashMap::HashFunc(int key)
{
return key % TABLE_SIZE;
}
void HashMap::Insert(int key, int value)
{
int hash = HashFunc(key);
while (table[hash] != NULL && table[hash]->key != key)
{
hash = HashFunc(hash + 1);
}
if (table[hash] != NULL)
delete table[hash];
table[hash] = new HashEntry(key, value);
}

int HashMap::Search(int key)
{
int hash = HashFunc(key);
while (table[hash] != NULL && table[hash]->key != key)
{
hash = HashFunc(hash + 1);
}
if (table[hash] == NULL)
return -1;
else
return table[hash]->value;
}

void HashMap::Remove(int key)
{
int hash = HashFunc(key);
while (table[hash] != NULL)
{
if (table[hash]->key == key)
break;
hash = HashFunc(hash + 1);
}
if (table[hash] == NULL)
{
cout << "No Element found at key " << key << endl;
return;
}
else
{
delete table[hash];
}
cout << "Element Deleted" << endl;
}

HashMap::~HashMap()
{
for (int i = 0; i < TABLE_SIZE; i++)
{
if (table[i] != NULL)
delete table[i];
delete[] table;
}
}
31 changes: 31 additions & 0 deletions data_structures/Hash Map/HashMap.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#pragma once
#include<iostream>
#include<cstdlib>
#include<string>
#include<cstdio>
using namespace std;
const int TABLE_SIZE = 128;

class HashEntry
{
public:
int key;
int value;
HashEntry(int key, int value)
{
this->key = key;
this->value = value;
}
};

class HashMap
{
HashEntry **table;
public:
HashMap();
int HashFunc(int key);
void Insert(int key, int value);
int Search(int key);
void Remove(int key);
~HashMap();
};
54 changes: 54 additions & 0 deletions data_structures/Hash Map/Source.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#include "HashMap.h"

int main()
{
HashMap hash;
int key, value;
int choice;
while (1)
{
cout << "\n----------------------" << endl;
cout << "Operations on Hash Table" << endl;
cout << "\n----------------------" << endl;
cout << "1.Insert element into the table" << endl;
cout << "2.Search element from the key" << endl;
cout << "3.Delete element at a key" << endl;
cout << "4.Exit" << endl;
cout << "Enter your choice: ";
cin >> choice;
switch (choice)
{
case 1:
cout << "Enter element to be inserted: ";
cin >> value;
cout << "Enter key at which element to be inserted: ";
cin >> key;
hash.Insert(key, value);
break;
case 2:
cout << "Enter key of the element to be searched: ";
cin >> key;
if (hash.Search(key) == -1)
{
cout << "No element found at key " << key << endl;
continue;
}
else
{
cout << "Element at key " << key << " : ";
cout << hash.Search(key) << endl;
}
break;
case 3:
cout << "Enter key of the element to be deleted: ";
cin >> key;
hash.Remove(key);
break;
case 4:
exit(1);
default:
cout << "\nEnter correct option\n";
}
}
return 0;
}

0 comments on commit 195f01d

Please sign in to comment.