Дисплей чтобы вся хэш таблица выводилась c++
я взял этот код с интернета, чтобы сдать лабу "hash table using double linked list" понял код через друзей и рассказал как мог, но дали задание, сделать так чтобы вся хэш таблица выводилась на дисплей, какой код нужен? Или как выводится хэш таблица???? с++
#include <iostream>
using namespace std;
const int tablesize = 25;
// объявление
struct hash_node {
int val, key;
hash_node* next;
hash_node* prev;
};
// объявление хэшмапа
class HashMap {
public:
hash_node **hashtable, **top;
//конструктор
HashMap()
{
// создаем пустую хеш-таблицу
hashtable = new hash_node*[tablesize];
top = new hash_node*[tablesize];
for (int i = 0; i < tablesize; i++) {
hashtable[i] = NULL;
top[i] = NULL;
}
}
//деструктор
~HashMap()
{
delete[] hashtable;
}
//хэш функция (определение)
int HashFunc(int key)
{
return key % tablesize;
}
//метод поиска
void find(int key)
{
//применение хэш функций для поиска индекса для данного ключа
int hash_val = HashFunc(key);
bool flag = false;
hash_node* entry = hashtable[hash_val];
// если в хеш-таблице по этому индексу хранятся некоторые значения
if (entry != NULL) {
while (entry != NULL) {
if (entry->key == key) {
flag = true;
}
if (flag) {
cout << "Элемент найден в ключе"
<< key << ": ";
cout << entry->val << endl;
}
entry = entry->next;
}
}
if (!flag)
cout << "Элемент не найден в ключе "
<< key << endl;
}
//удаление элемента
void remove(int key)
{
//применение хэш функций для поиска индекса для данного ключа
int hash_val = HashFunc(key);
hash_node* entry = hashtable[hash_val];
if (entry->key != key || entry == NULL) {
cout << "Не удалось найти ни одного элемента в этом ключе "
<< key << endl;
return;
}
while (entry != NULL) {
if (entry->next == NULL) {
if (entry->prev == NULL) {
hashtable[hash_val] = NULL;
top[hash_val] = NULL;
delete entry;
break;
}
else {
top[hash_val] = entry->prev;
top[hash_val]->next = NULL;
delete entry;
entry = top[hash_val];
}
}
entry = entry->next;
}
cout << "Элемент был успешно удален в ключе "
<< key << endl;
}
//метод вставления
void add(int key, int value)
{
//применение хэш функций для поиска индекса для данного ключа
int hash_val = HashFunc(key);
hash_node* entry = hashtable[hash_val];
// если ключ не имеет сохраненного значения
if (entry == NULL) {
//создание нового узла
entry = new hash_node;
entry->val = value;
entry->key = key;
entry->next = NULL;
entry->prev = NULL;
hashtable[hash_val] = entry;
top[hash_val] = entry;
}
// если присутствуют некоторые значения
else {
// обход до конца списка
while (entry != NULL)
entry = entry->next;
//создание нового узла
entry = new hash_node;
entry->val = value;
entry->key = key;
entry->next = NULL;
entry->prev = top[hash_val];
top[hash_val]->next = entry;
top[hash_val] = entry;
}
cout << "Значение " << value << " был успешно "
" добавлен в ключ " << key << endl;
}
};
int main()
{
HashMap hash;
hash.add(4, 5);
hash.find(4);
hash.remove(4);
return 0;
}