This is the incomplete example from class last week, where we started implementing a hash table as a vector of queues.
In order for this example to work, the Queue struct needs 3 more functions to be implemented. A find function, which tells us it a given value appears in the queue, without being destructive. A function called print, which prints out the contents of the queue, again without being destructive. Finally, there is a need for a destructor. To implement it, you can just keep popping elements off the queue until there are no elements left.
Implement the 3 functions required in Queue.h and upload it here.
-------------------------------------------------
towardsHashTables.cpp
#include <iostream>
#include <vector>
#include "Queue.h"
using namespace std;
long k = 10;
long f (long x){
return x % k;
}
int main() {
// Declare a vector of Queue pointers
vector<Queue*> hashtable;
// Initialize the vector with k empty Queues
for (long i = 0; i < k; i++) {
hashtable.push_back(new Queue());
}
// This is the value I want to insert
long value = 234;
// Run it through the hash function to determine
// to which queue we need to push it
long index = f(value);
// Push value to the index-th Queue
hashtable[index]->push(value);
// One more time
value = 23;
index = f(value);
hashtable[index]->push(value);
// One more time
value = 23453;
index = f(value);
hashtable[index]->push(value);
// Let's do some searching
// This is what I am searching for
value = 7;
// Which queue should I be looking at
index = f(value);
// Look for it in the queue pointed to by index
cout << hashtable[index]->find(value) << endl << endl;
// Print contents of hash table
for (long i = 0; i < k; i++) {
Queue* current = hashtable[i];
cout << i << ": ";
current->print();
cout << endl;
}
for (long i = 0; i < k; i++) {
delete hashtable[i];
}
return 0;
}
-------------------------------------------------
Queue.h
#ifndef Queue_h
#define Queue_h
#include <iostream>
struct Link {
long data;
Link* next;
Link(){
data = 0;
next = NULL;
}
Link (long d){
data = d;
next = NULL;
}
};
struct Queue {
Link* front;
Link* back;
Queue (){
front = NULL;
back = NULL;
}
long peek () {
return front->data;
}
void push(long value){
if (isEmpty()){
front = new Link(value);
back = front;
}
else {
back->next = new Link(value);
back = back->next;
}
}
bool find (long value){
// Provide your code here
}
bool isEmpty(){
return (front == NULL);
}
long pop(){
long val = front->data;
Link* oldFront = front;
front = front->next;
delete oldFront;
return val;
}
void print() {
// Provide your code here
}
~Queue(){
// Provide your code here
}
};
#endif
-------------------------------------------------
This is the incomplete example from class last week, where we started implementing a hash table...
Instructions Download the files towardsHashTables.cpp, and Queue.h. This is the incomplete example from class last week, where we started implementing a hash table as a vector of queues. In order for this example to work, the Queue struct needs 3 more functions to be implemented. A find function, which tells us it a given value appears in the queue, without being destructive. A function called print, which prints out the contents of the queue, again without being destructive. Finally, there...
Follow the TODOs and complete the insertItem(), searchItem() and printTable() functions in hash.cpp. The hash function has already been implemented for you. // hash.CPP program to implement hashing with chaining #include<iostream> #include "hash.hpp" using namespace std; node* HashTable::createNode(int key, node* next) { node* nw = new node; nw->key = key; nw->next = next; return nw; } HashTable::HashTable(int bsize) { this->tableSize= bsize; table = new node*[tableSize]; for(int i=0;i<bsize;i++) table[i] = nullptr; } //function to calculate hash function unsigned int HashTable::hashFunction(int key)...
//This is the implementation file queue.cpp. //This is the implementation of the template class Queue. //The interface for the template class Queue is in the header file queue.h. #include <iostream> #include <cstdlib> #include <cstddef> #include "queue.h" using std::cout; namespace QueueSavitch { //Uses cstddef: template<class T> Queue<T>::Queue( ) : front(NULL), back(NULL) { //Intentionally empty. } //Uses cstddef: template<class T> bool Queue<T>::isEmpty( ) const { return (back == NULL);//front == NULL would also work } //Uses cstddef: template<class T> void Queue<T>::add(T item)...
PART A - STACKS To complete this assignment: Please study the code posted below. Please rewrite the code implementing a template class using a linked list instead of an array. Note: The functionality should remain the same *************************************************************************************************************** /** * Stack implementation using array in C/procedural language. */ #include <iostream> #include <cstdio> #include <cstdlib> //#include <climits> // For INT_MIN #define SIZE 100 using namespace std; /// Create a stack with capacity of 100 elements int stack[SIZE]; /// Initially stack is...
C programming Problem 3 [Set via Hashing] As mentioned in the lecture, a hash table can be used to implement a Set ADT. Let's try to use the template below to implement a Set with double hashing. Here we assume the Set contains names with 3 characters long. Since it is a Set, we do not need to have an explicit value for each key. We will use a token value of 1 if a name belongs to the Set....
Hello, I have some errors in my C++ code when I try to debug it.
I tried to follow the requirements stated below:
Code:
// Linked.h
#ifndef INTLINKEDQUEUE
#define INTLINKEDQUEUE
#include <iostream>
usingnamespace std;
class IntLinkedQueue
{
private: struct Node {
int data;
Node *next;
};
Node *front; // -> first item
Node *rear; // -> last item
Node *p; // traversal position
Node *pp ; // previous position
int size; // number of elements in the queue
public:
IntLinkedQueue();...
Please answer this problem in C++, Thank you! Read and study the sample program: "hashing with chaining using singly linked lists", as well as "hashing with chaining using doubly linked lists". Notice this program is complete except it doesn't include the remove function. Write the remove function and test it with the rest of the program including the given main program. Upload your C++ source file. ---Here is the referenced program: "hashing with chaining using singly linked lists". Below this...
Type up and get the Hash table on pages 19 - 22 to work. Show
your sample test run at the bottom of your code using a multiline
comment
I typed everything but the code is not working please help me
fix the mistakes.
These are pages 19-22.
The code I have:
#include <iostream>
#inlcude <iomanip>
#include <stack>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
//////////////////////////////HASH
TABLE///////////////////////////////////////////////
//hash.cpp
//demonstrate hash table with linear probing
///////////////////////////////////////////////////////////////////////////////////////
class DataItem
{...
In C++ I am trying to implement a log base 2 hash table utilizing the shift function. So, the code determines the position of where the value will be stored using log2. But am having issues using the shift part as everything just wants to pile on to zero. //ChainingHash - log2 #include<iostream> #include<vector> #include<iterator> #include<string> #include<cmath> using namespace std; #define BUCKET 10 //no. of buckets class Hash { vector<int>*table; //ptr containing buckets public: Hash();...
Please answer in C++ Derive a class called Queue from the linked list described in Assignment 2 (list of Dates). This means the Queue class will inherit all the properties (data and functions) of the linked list. But, since a queue allows pushing only at the back and popping at the front of the list, you will need to prevent the addition in the front and removal at the back. To do this, you must derive the Queue class in...