Tuesday, 10 January 2017

Hash functions



#include<iostream>
using namespace std;
const int maxval=20;
struct Data
{
int data;
bool occupied;
};
void insert(Data [],int);
int search(Data [],int);
int Delete(Data[],int);
int main()
{
Data arr[maxval];
int i,val;
for(i=0;i<maxval;i++)
{
arr[i].occupied=false;
}
char opt;
cout<<"******************************Hashing Technique******************************"<<endl<<endl;
cout<<"Now Inserting Data in HASH-TABLE "<<endl<<endl;
for(i=0;i<maxval;i++)
{
cout<<"Enter val "<<i+1<<endl;
cin>>val;
insert(arr,val);
cout<<"Do you want to insert another value ? \npress Y for yes and press any other key for no."<<endl;
cin>>opt;
if(opt!='y' && opt!='Y')
{
break;
}
}
cout<<"You Entered total "<<i+1<<" value(s)"<<endl;
cout<<"Insertion Done Now search the specified data."<<endl<<endl;
cout<<"Enter Data to be searched"<<endl;
cin>>val;
int index;
index=search(arr,val);
if(index==-1)
{
cout<<"Sorry data Not Found "<<endl;
}
else
{
cout<<"value found at index "<<index<<endl;
}
cout<<"Searching Done Now we are about to delete specified data."<<endl<<endl;
cout<<"Enter Data to be delete"<<endl;
cin>>val;
index=Delete(arr,val);
if(index==-1)
{
cout<<"Sorry data Not Found "<<endl;
}
else
{
cout<<"value deleted , it was at at index "<<index<<endl;
}
return 0;
}
void insert(Data arr[],int val)
{
int hashindex=val%maxval;
while(arr[hashindex].occupied!=false)
{
hashindex=hashindex+1;
hashindex=hashindex%maxval;
}
arr[hashindex].data=val;
arr[hashindex].occupied=true;
}

int search(Data arr[],int val)
{
int hashindex=val%maxval;
while(arr[hashindex].occupied!=false)
{
if(arr[hashindex].data==val)
{
return hashindex;
}
hashindex=hashindex+1;
hashindex=hashindex%maxval;
}
return -1;
}

int Delete(Data arr[],int val)
{
int hashindex=val%maxval;
while(arr[hashindex].occupied!=false)
{
if(arr[hashindex].data==val)
{
arr[hashindex].occupied=false;
return hashindex;
}
hashindex=hashindex+1;
hashindex=hashindex%maxval;
}
return -1;
}

1 comment:

Unknown said...

You are doing good job continue it