C++ Programming Blog

 
 
 

Image

 # include <iostream.h>
 # include  <fstream.h>
 # include   <string.h>
 # include    <stdio.h>
 # include    <conio.h>

 /**************************************************************************/
 //---------------------------------  Node  -------------------------------//
 /**************************************************************************/

 class Node
 {
    public:
       int data;

       Node* Next;
 };

 # define MAX_ENTRIES  25

 Node* HashTable[MAX_ENTRIES]={NULL};
 Node* Top[MAX_ENTRIES]={NULL};


 /**************************************************************************/
 //------------------------  generate_hash_key( )  ------------------------//
 /**************************************************************************/

 const int generate_hash_key(const int data)
 {
    return (data%MAX_ENTRIES);
 }

 /**************************************************************************/
 //---------------------------  insert_data( )  ---------------------------//
 /**************************************************************************/

 void insert_data( )
 {
    int data;

    cout<<\"\\n\\n\\n\\t *********   New Element   ********* \"<<endl<<endl;
    cout<<\"\\t Enter a value : \";
    cin>>data;

    int index=generate_hash_key(data);

    Node* Entry=new Node;

    if(!Entry)
    {
       cout<<\"\\n\\n\\n\\t Fatal Error : Unable to allcate memory to stroe new element.\"<<endl;
       cout<<\"\\n\\n\\t\\t Pres any key to return to Menu. \";

       getch( );
       return;
    }

    if(HashTable[index]==NULL)
    {
       Entry->data=data;
       Entry->Next=NULL;
       HashTable[index]=Entry;
       Top[index]=Entry;
    }

    else
    {
       Entry->data=data;
       Entry->Next=NULL;
       Top[index]->Next=Entry;
       Top[index]=Entry;
    }

    cout<<\"\\n\\n\\t\\t Pres any key to return to Menu. \";

    getch( );
 }

 /**************************************************************************/
 //----------------------------  print_data( )  ---------------------------//
 /**************************************************************************/

 void print_data( )
 {
    clrscr( );

    cout<<\"\\n\\n\\t *****  HashTable & Data  *****\\n\"<<endl;

    Node* Print;

    for(int index=0;index<MAX_ENTRIES;index++)
    {
       if(index<10)
      cout<<\"\\t HashTable[0\"<<index<<\"] : \";

       else
      cout<<\"\\t HashTable[\"<<index<<\"] : \";

       Print=HashTable[index];

       if(Print!=NULL)
       {
      while(Print!=NULL)
      {
         cout<<Print->data;

         Print=Print->Next;

         if(Print!=NULL)
        cout<<\" , \";
      }

      cout<<endl;
       }

       else
      cout<<\"-\"<<endl;
    }

    cout<<\"\\n\\n\\t\\t Pres any key to return to Menu. \";

    getch( );
 }

 /**************************************************************************/
 //----------------------------  search_data( )  --------------------------//
 /**************************************************************************/

 void search_data( )
 {
    int data;

    cout<<\"\\n\\n\\n\\t *****  Search an Element  *****\\n\"<<endl;
    cout<<\"\\t Enter a value : \";
    cin>>data;

    int flag=0;
    int index=generate_hash_key(data);

    Node* Print=HashTable[index];

    if(Print!=NULL)
    {
       while(Print!=NULL)
       {
      if(Print->data==data)
         flag++;

      Print=Print->Next;
       }

       if(flag)
      cout<<\"\\n\\n\\t ***  The Search Element is found \"<<flag<<\" times.\";
    }

    if(!flag)
       cout<<\"\\n\\n\\t ***  The Search Element is not found.\"<<endl;

    cout<<\"\\n\\n\\n\\t\\t Pres any key to return to Menu. \";

    getch( );
 }

 /**************************************************************************/
 //---------------------------  show_working( )  --------------------------//
 /**************************************************************************/

 void show_working( )
 {
    char Key=NULL;

    do
    {
       clrscr( );

       gotoxy(10,5);
       cout<<\"**********   Implementation of Hashing   **********\"<<endl;

       gotoxy(10,8);
       cout<<\"Select one of the listed operation :\"<<endl;

       gotoxy(15,10);
       cout<<\"- Press \\\'I\\\' to Insert an Element\"<<endl;

       gotoxy(15,12);
       cout<<\"- Press \\\'P\\\' to Print the HashTable & Data\"<<endl;

       gotoxy(15,14);
       cout<<\"- Press \\\'S\\\' to Search an Element\"<<endl;

       gotoxy(15,16);
       cout<<\"- Press \\\'E\\\' to Exit\"<<endl;

       Input:

       gotoxy(10,20);
       cout<<\"                      \";

       gotoxy(10,20);
       cout<<\"Enter your Choice : \";

       Key=getche( );

       if(int(Key)==27 || Key==\'e\' || Key==\'E\')
      break;

       else if(Key==\'i\' || Key==\'I\')
      insert_data( );

       else if(Key==\'p\' || Key==\'P\')
      print_data( );

       else if(Key==\'s\' || Key==\'S\')
      search_data( );

       else
      goto Input;
    }
    while(1);
 }


 int main( )
 {
    textmode(C4350);

    show_working( );

    return 0;
 }

 
 
Didn't find what you were looking for? Find more on Program to show the Simple implementation of Hashing