C++ Program to Implement Direct Addressing Tables


This is a C++ program to implement Direct Addressing Tables. Direct Addressing Tables are used when each element has a key drawn from a universal set S = {0, 1, . . . ,n − 1} where n isn’t too large and each key is unique. It facilitates fast insertion, searching and deletion operations.

Functions and pseudocodes

Begin
   insert():
      Take the table variables word and key as argument.
      T[ x.key ] = x, where x is a value of key.
   delete():
      Take the table variables word and key as argument.
      T[ x.key ] = tab(0,” ”)
   search():
      Return T[key]
End

Example

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstdio>
using namespace std;
struct tab {  //declaration of variables of the table.
   string word;
   int key;
   tab()
   {}
   tab( int k, string w ) //constructor to initialize the
   variable. {
      word=w;
      key = k;
   }
};
void INSERT( tab T[], tab x ) {
   T[ x.key ] = x;
}
void DELETE( tab T[], tab x ) {
   T[ x.key ] = tab(0, "");
}
tab SEARCH( tab T[], int key ) {
   return T[ key ];
}
int main() {
   int i, k, c;
   string str;
   tab T[65536]; //initialize size of the table.
   tab x;
   for(i = 0; i < 65536;i++)
      T[i] = tab(0,"");
   while (1) {
      cout<<"1.Insert element into the key"<<endl;
      cout<<"2.Delete element from the table"<<endl;
      cout<<"3.Search element into the table"<<endl;
      cout<<"4.Exit"<<endl;
      cout<<"Enter your Choice: ";
      cin>>c;
      switch(c) {
         case 1: {
            string str1 = "";
            cout<<"Enter the key value: ";
            cin>>k;
            cout<<"Enter the string to be inserted: ";
            cin.ignore();
            getline(cin, str);
            INSERT(T, tab(k, str));
            break;
         }
         case 2:
            cout<<"Enter the key of element to be deleted: ";
            cin>>k;
            x = SEARCH(T, k);
            DELETE(T, x);
            break;
         case 3:
            cout<<"Enter the key of element to be searched: ";
            cin>>k;
            x = SEARCH(T, k);
            if (x.key == 0) { 
               cout<<"No element inserted at the key"<<endl;
               continue;
            }
            cout<<"Element at key "<<k<<" is-> ";
            cout<<"\""<<x.word<<"\""<<endl;
            break;
         case 4:
            exit(1);
         default:
            cout<<"Wrong Choice"<<endl;
      }
   }
   return 0;
}

Output

1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 1
Enter the key value: 1
Enter the string to be inserted: hi
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 1
Enter the key value: 2
Enter the string to be inserted: tutorials
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 1
Enter the key value: 3
Enter the string to be inserted: point
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 3
Enter the key of element to be searched: 1
Element at key 1 is-> "hi"
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 3
Enter the key of element to be searched: 4
No element inserted at the key
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 2
Enter the key of element to be deleted: 1
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 3
Enter the key of element to be searched: 1
No element inserted at the key
1.Insert element into the key
2.Delete element from the table
3.Search element into the table
4.Exit
Enter your Choice: 4
raja
Published on 30-Apr-2019 08:05:31
Advertisements