Я реализую программу для поиска строки в файле. Что я делаю, я прошу пользователя ввести имя и содержимое файла, а затем символизировать содержимое с пространством как разделитель и создать хеш-таблицу. пример:Удалить из HashTable на основе значения в C++, не используя STL
filename-abc.txt content- i am bad than u filename-xyz.txt content-u r awesome
.
Моя хэш-карта выглядит следующим образом:
i->abc.txt
m->abc.txt
bad->abc.txt
than->abc.txt
u->abc.txt->xyz.txt
r->xyz.txt
awesome->xyz.txt
я должен сделать много работы на нем, но одна такая операция delete the filename
, что означает, что если пользователь запрашивает удалить xyz.txt, то HashMap должен выглядеть
i->abc.txt
m->abc.txt
bad->abc.txt
than->abc.txt
u->abc.txt
Все это происходит в памяти, и я создал мой собственный hashnode
и hashmap
, не используя C++ STL
.
Мой HashNode выглядит следующим образом
class HashNode
{
public:
int key;
string value;
HashNode* next;
HashNode(int key, string value)
{
this->key = key;
this->value = value;
this->next = NULL;
}
};
HashMap, как это
class HashMap
{
private:
HashNode** htable;
public:
HashMap()
{
htable = new HashNode*[TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; i++)
htable[i] = NULL;
}
Как бы я осуществить операцию удаления файла.
В соответствии с вашим кодом удаление 'filename' является просто задачей удаления узла из отдельного списка ссылок. Но вам нужно разобрать список ссылок, который присутствует в каждом индексе вашей хеш-таблицы. Вместо разбора всей хэш-таблицы вы можете создать вторую hastable, которая может сообщить вам, какой файл присутствует, по индексу первой хеш-таблицы. – sameerkn