235k views
1 vote
Create the following HashTable demo according to the following instructions: a. Use the following struct template to create nodes that contain a string and a cnt struct Node string Fruit; //name int cnt; / #fruits ; b. Create a Node Fruit array(e.g. Node Fruit[21]) and initialize it with the following fruit names and cnt values: - "Apple(1)", "Banana(2)", "Cherry(3)", "Date(4)", "Eldenberry(5)", "Fig(6)", "Guava(7)", "Honeydew(8)", "Jackfruit(9)" "Kiwi(10)", Lemon(11)", "Mango(12)", "Nut(13)", "Orange(14)", "Pear(15)", "Quince(16)", "Raisin(17)", "Strawberry(18)", "Tangerine(19)", "Watermelon(20)" of Noo, "Yumberry(21)"

1 Answer

5 votes

Here's an example implementation of a HashTable demo using the provided instructions:

```c++

#include <iostream>

#include <string>

const int TABLE_SIZE = 21;

struct Node {

std::string fruit;

int cnt;

};

int hashFunction(const std::string& fruit) {

// Simple hash function that sums the ASCII values of the characters

int sum = 0;

for (char c : fruit) {

sum += c;

}

return sum % TABLE_SIZE;

}

void displayHashTable(const Node Fruit[]) {

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

std::cout << "Bucket " << i << ": ";

if (Fruit[i].fruit.empty()) {

std::cout << "Empty" << std::endl;

} else {

std::cout << Fruit[i].fruit << " (" << Fruit[i].cnt << ")" << std::endl;

}

}

}

int main() {

Node Fruit[TABLE_SIZE] = {}; // Initialize all nodes to empty

// Initialize the array with fruit names and cnt values

std::string fruitNames[TABLE_SIZE] = {

"Apple(1)", "Banana(2)", "Cherry(3)", "Date(4)", "Eldenberry(5)", "Fig(6)",

"Guava(7)", "Honeydew(8)", "Jackfruit(9)", "Kiwi(10)", "Lemon(11)", "Mango(12)",

"Nut(13)", "Orange(14)", "Pear(15)", "Quince(16)", "Raisin(17)", "Strawberry(18)",

"Tangerine(19)", "Watermelon(20)", "Yumberry(21)"

};

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

int hash = hashFunction(fruitNames[i]);

Fruit[hash].fruit = fruitNames[i];

Fruit[hash].cnt = i + 1;

}

displayHashTable(Fruit);

return 0;

}

```

In this implementation, the `Node` struct template is used to create nodes that store a fruit name and a cnt value. The `hashFunction()` function is a simple hash function that sums the ASCII values of the characters in the fruit name and returns the hash value modulo the table size. The `displayHashTable()` function is used to print the contents of the HashTable.

The main function initializes the `Fruit` array with the provided fruit names and cnt values. It calculates the hash value for each fruit name using the `hashFunction()` and stores the fruit name and cnt value in the corresponding bucket of the `Fruit` array.

Finally, the `displayHashTable()` function is called to display the contents of the HashTable.

Note: This implementation uses a simple hash function for demonstration purposes. In practice, more sophisticated hash functions may be used to achieve better distribution and reduce collisions.

User JoshBerke
by
8.1k points
Welcome to QAmmunity.org, where you can ask questions and receive answers from other members of our community.