# Chaining using hashing

```cpp
20) Write a cpp program to demonstrate the Hashing
#include<iostream>
#include<stdlib.h>
using namespace std;
#define max 100
typedef struct list
{
 int data;
 
struct list *next;
}node;
node *ptr[max],*root[max],*temp[max];
class dic
{
 public:
int index;
 
dic()
 
{
 
 index=-1;
 
 for(int i=0;i<=max;i++)
 
 {
 
 root[i]=NULL;
 
 ptr[i]=NULL;
 
 temp[i]=NULL;
 
 }
 
 }
void insert(int key)
 
 {
 
 index=int(key%max);
 
 ptr[index]=new node;
 
 ptr[index]->data=key;
 
 if(root[index]==NULL)
 
 {
 
 root[index]=ptr[index];
 
 root[index]->next=NULL;
 
 temp[index]=ptr[index];
 
 }
 
 else
 
 {
 
 temp[index]=root[index];
 
 while(temp[index]->next!=NULL)
 
 temp[index]=temp[index]->next;
 
 temp[index]->next=ptr[index];
 
 }
void search(int key)
 {
 
 int flag=0;
 
 index=int(key%max);
 
 temp[index]=root[index];
 
 while(temp[index]->data==key)
 
 {
 
 if(temp[index]->data==key)
 
 {
 
 cout<<"\n search key is found";
 
 flag=1;
 
 break;
 
 }
 
 else
 
 temp[index]=temp[index]->next;
 
 }
 
 if (flag=0)
 
 cout<<"searched key not found";
 }
void delete_ele(int key)
{
 
index=int(key%max);
 
temp[index]=root[index];
 
while(temp[index]->data!=key&&temp[index]!=NULL)
 
{
 
 ptr[index]=temp[index];
 
 temp[index]=temp[index]->next;
 
}
 
 ptr[index]->next=temp[index]->next;
 
 cout<<"\n"<<temp[index]->data<<"has been deleted";
 
 temp[index]->data=-1;
 
 temp[index]=NULL;
 
 free(temp[index]);
 }
};
int main()
{
 int val,ch,n,num;
 char c;
 dic d;
 do
 {
 cout<<"\n Menu \n1.create \n2.search \n3.delete \n4.exit";
 cout<<"\n enter your choice:";
 cin>>ch;
switch(ch)
 {
 case 1:
cout<<"\n enter the no of elements to be instered";
 
cin>>n;
 
cout<<"enter the elements to be inserted";
 
for(int i=0;i<n;i++)
 
{
 
 cin>>num;
 
 d.insert(num);
 
 }
 
 break;
 case 2:
cout<<"enter the elements to be serached";
 
cin>>n;
 
 d.search(n);
 
 break;
 case 3:
cout<<"enter the elements to be deleted";
 
cin>>n;
 
d.delete_ele(n);
 
break;
 case 4:
exit(0);
 default:
cout<<"invalid choice";
 }
 } while(ch<=4);
}

```
