Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ PLEASE HELP: Implement main.cpp file, which creates a HashTable object with parameter 10007 for the constructor. The constructor of HashTable uses this prime number

C++ PLEASE HELP:

Implement main.cpp file, which creates a HashTable object with parameter 10007 for the constructor. The constructor of HashTable uses this prime number to build an internal SLL object array. Each element of the array is an SLL object. Of course, you can choose a different array size, but make sure the size is a prime number.

main.cpp:

#include #include #include "hashTable.h" #include #include #include

using namespace std;

int main(int argc, char* argv[]){

// implement this missing part // make the array size inside the hash table is 10007 }

CODE GIVEN:

hashtable.h

#include #include "SLL.h" #include #include using namespace std;

template class HashTable { int tableSize; // table size SLL* table; public: // default constructor, which uses default table size 3 HashTable() { tableSize = 3; table = new SLL[tableSize]; } // constructor, which use size as the table size HashTable(int size) { tableSize = size; table = new SLL[tableSize]; } // search item in the table // if found, return true; otherwise, return false bool find(V item){ long hashVal = 0; long compressVal = 0; for(int i=0; i<=item.length()-1; i++) { int power = item.length()-1-i; hashVal = hashVal + ((int)(item.at(i)))*(pow(31, power)); } compressVal = abs((hashVal)%(10007)); SLL* temp = &table[compressVal]; if(temp->search(item) != NULL){ return true; } else{ return false; } } // insert (item1, item2) to the table // use item1 as the key // if inserted, return true // otherwise, return false bool insert(V item1, V item2) { long hashVal=0; long compressVal=0; for(int i=0; i<=item1.length() - 1; i++){ int power = item1.length() - 1 - i; hashVal = hashVal + ((int)(item1.at(i))) * (pow(31, power)); } compressVal = abs((hashVal)%(10007)); SLL* temp1 = &table[compressVal]; if(temp1->search(item1) != NULL){ return false; } SLL* temp2 = &table[compressVal]; temp2->insert(item1, item2); SLL* temp3 = &table[compressVal]; if(temp3->search(item1) != NULL){ return true; } else{ return false; } } // delete the pair whose key value is item // if deleted, return true // otherwise, return false bool erase(V item) { long hashVal=0; long compressVal=0; for(int i=0; i<= item.length() - 1; i++) { int power = item.length() -1 - i; hashVal = hashVal + ((int)(item.at(i)))*(pow(31, power)); } compressVal = abs((hashVal)%(10007)); SLL* temp1 = &table[compressVal]; if(temp1->remove(item)) { return true; } else { return false; } } // return the total number of nodes in the hash table int getSize() { int nodeCount = 0; for(int i=0; i<=tableSize-1; i++) { SLL* temp = &table[i]; nodeCount = nodeCount + temp->getSize(); } return nodeCount; } };

SLL.h

#include #include "node.h" using namespace std;

template class SLL { Node * headPtr; int size; public: // default constructor SLL(){ headPtr = NULL; size = 0; } // destructor ~SLL(){ Node *next; while(headPtr != nullptr) { next = headPtr->next; delete headPtr; headPtr = next; } } Node* getHeadPtr(){ return headPtr; } // insert (item1, item2) to the list void insert(U item1, U item2){ Node *n = new Node(); n->SSN = item1; n->name = item2; n->next = nullptr; if(headPtr == nullptr) headPtr = n; else{ Node last = headPtr; while(last->next != nullptr){ last = last->next; } last->next = n; } size++; } // if find the item1 value, return the pointer to the node // otherwise, return nullptr Node* search(U item1){ Node *curr = headPtr; while(curr != nullptr) { if(curr->item1 == curr->SSN) return curr; curr = curr->next; } return nullptr;//not found } // remove the node with key value: item1 bool remove(U item1){ Node *prev = nullptr, *curr = headPtr; while(curr != nullptr) { if(curr->SSN == item1) break; prev = curr; curr = curr->next; } if(curr == nullptr) //not found return false; if(curr == headPtr) //remove head node? headPtr = curr->next; else prev->next = curr->next; delete curr; size--; return true; } int getSize(){ return size; } // display the SSN values of each node in the linked list void display(){ Node* temp; temp = headPtr; while (temp!= nullptr) { cout << temp->SSN << endl; temp = temp->next; } } };

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Intelligent Databases Object Oriented Deductive Hypermedia Technologies

Authors: Kamran Parsaye, Mark Chignell, Setrag Khoshafian, Harry Wong

1st Edition

0471503452, 978-0471503453

More Books

Students also viewed these Databases questions