C++ Program to Implement Hash Tables chaining with Singly Linked Lists

I hope every article can give you some new information. In that sense today we are going to know very clearly about C++ Program to Implement Hash Tables chaining with Singly Linked Lists. Let’s go into our article.

C++ Program to Implement Hash Tables chaining with Singly Linked Lists

C++ Program to Implement Hash Tables chaining with Singly Linked Lists

#include<iostream>

    #include<cstdlib>

    #include<string>

    #include<cstdio>

    using namespace std;

    const int TABLE_SIZE = 128;

    /* HashNode Class Declaration     */

    class HashNode

    {

        public:

       .    int key;

    	int value;

    	HashNode* next;

            HashNode(int key, int value)

            {

                this->key = key;

    	    this->value = value;

    	    this->next = NULL;

            }

    };

    /* HashMap Class Declaration     */

    class HashMap

    {

        private:

            HashNode** htable;

        public:

            HashMap()

            {

                htable = new HashNode*[TABLE_SIZE];

                for (int i = 0; i < TABLE_SIZE; i++)

                    htable[i] = NULL;

            }

            ~HashMap()

            {

                for (int i = 0; i < TABLE_SIZE; ++i)

    	    {

                    HashNode* entry = htable[i];

                    while (entry != NULL)

    	        {

                        HashNode* prev = entry;

                        entry = entry->next;

                        delete prev;

                    }

                }

                delete[] htable;

            }

            /* Hash Function             */

            int HashFunc(int key)

            {

                return key % TABLE_SIZE;

            }

            /* Insert Element at a key             */

            void Insert(int key, int value)

            {

                int hash_val = HashFunc(key);

                HashNode* prev = NULL;

                HashNode* entry = htable[hash_val];

                while (entry != NULL)

                {

                    prev = entry;

                    entry = entry->next;

                }

                if (entry == NULL)

                {

                    entry = new HashNode(key, value);

                    if (prev == NULL)

    	        {

                        htable[hash_val] = entry;

                    }

    	        else

    	        {

                        prev->next = entry;

                    }

                }

                else

                {

                    entry->value = value;

                }

            }

            /* Remove Element at a key             */

            void Remove(int key)

            {

                int hash_val = HashFunc(key);

                HashNode* entry = htable[hash_val];

                HashNode* prev = NULL;

                if (entry == NULL || entry->key != key)

                {

                	cout<<"No Element found at key "<<key<<endl;

                    return;

                }

                while (entry->next != NULL)

    	    {

                    prev = entry;

                    entry = entry->next;

                }

                if (prev != NULL)

                {

                    prev->next = entry->next;

                }

                delete entry;

                cout<<"Element Deleted"<<endl;

            }

            /* Search Element at a key             */

            int Search(int key)

            {

                bool flag = false;

                int hash_val = HashFunc(key);

                HashNode* entry = htable[hash_val];

                while (entry != NULL)

    	    {

                    if (entry->key == key)

    	        {

                        cout<<entry->value<<" ";

                        flag = true;

                    }

                    entry = entry->next;

                }

                if (!flag)

                    return -1;

            }

    };

    /* Main Contains Menu     */

    int main()

    {

        HashMap hash;

        int key, value;

        int choice;

        while (1)

        {

            cout<<"n----------------------"<<endl;

            cout<<"Operations on Hash Table"<<endl;

            cout<<"n----------------------"<<endl;

            cout<<"1.Insert element into the table"<<endl;

            cout<<"2.Search element from the key"<<endl;

            cout<<"3.Delete element at a key"<<endl;

            cout<<"4.Exit"<<endl;

            cout<<"Enter your choice: ";

            cin>>choice;

            switch(choice)

            {

            case 1:

                cout<<"Enter element to be inserted: ";

                cin>>value;

                cout<<"Enter key at which element to be inserted: ";

                cin>>key;

                hash.Insert(key, value);

                break;

            case 2:

                cout<<"Enter key of the element to be searched: ";

                cin>>key;

                cout<<"Element at key "<<key<<" : ";

                if (hash.Search(key) == -1)

                {

    	        cout<<"No element found at key "<<key<<endl;

    	        continue;

    	    }

                break;

            case 3:

                cout<<"Enter key of the element to be deleted: ";

                cin>>key;

                hash.Remove(key);

                break;

            case 4:

                exit(1);

            default:

               cout<<"nEnter correct optionn";

           }

        }

        return 0;

    }

Read Also: C++ Program to Implement Hash Tables with Double Hashing

Final Words

C++ Program to Implement Hash Tables chaining with Singly Linked Lists Article We hope you have all the information you need. Let me know if you have any doubts about this article. Thanks.

Hi, I'm Ranjith a full-time Blogger, YouTuber, Affiliate Marketer, & founder of Coding Deekshi. Here, I post about programming to help developers.

Share on:

Leave a Comment