Sunday, 15 January 2017

Chaining hash function

#include <iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
class ch
{
private:
Node *first;
int Size;
public:
//constructor
ch(int size)
{
Size=size;
first=new Node [size];
for (int i=0; i<size; i++)
{
first[i]=NULL;
}
}
//hash Function
int hash(int value)
{
return (value%Size);
}
//insert function
void insert(int value)
{
int location=hash(value);
Node *temp=new Node;
temp->data=value;
temp->next=first[location];
first[location]=temp;
}
//search Function
bool search(int value)
{
int location=hash(value);
if (first[location]==NULL)
{
return false;
}
else
{
Node *ptr=first[location];
while (ptr->next!=NULL)
{
if (ptr->data==value)
{
break;
}
else
{
ptr=ptr->next;
}
}
if (ptr->next==NULL)
{

return false;
}
else
{
return true;
}
}
}
// delete fucntion
int del(int value)
{
int location=hash(value);
if (first[location]==NULL)
{
return -1
}
else
{
Node *pre=first[location],*curr=first[location];
while (curr->nex!=NULL)
{
if (curr->data==value)
{
break;
}
else
{
pre=curr;
curr=curr->next;
}
}
if (curr->next==NULL)
{
return -1;
}
else
{
int data=curr->data;
prev->next=curr->nex;
delete curr;
return data;
}
}
}
};

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;
}

Sunday, 1 January 2017

Reverse and Palendroom





#include <iostream>
using namespace std;
int main()
{
int num,revise,digit,original_num;
cout <<"Enter any intrege number" <<endl;
cin >>num;
original_num=num;
revise=0;
while (num!=0){
digit=num%10;
revise=(revise*10)+digit;
num=num/10;
}
cout <<"Revise of number = "<<revise <<endl;
if (revise==original_num){
cout <<"Number is palendrome" <<endl;
}else {
cout <<"Number is not Palendrome" <<endl;
}

return 0;
}