Здравствуйте, я хочу удалить указанный элемент из ключа в хеш-таблице, но функция, которая у меня есть, удаляет последнее значение, которое я вставил в ключ. Мне нужно два аргумента в моей функции. Например, я хочу удалить элемент 3из ключа 1.
Ключ: 1 элемент: 2 4 3
Ключ: 2 элемента: 5 6 7
После удаления (например, Удалить (1,3))я хочу что-то вроде этого Ключ: 1 Элементов: 2 4
void HashTable::Remove(int key)
{
int hash_val = HashFunc(key);
HashNode* entry = htable[hash_val];
HashNode* prev = NULL;
if (entry == NULL || entry->key != key)
{
cout<<"No Element found at key "<<key<<endl;
return;
}
while (entry->next != NULL)
{
prev = entry;
entry = entry->next;
}
if (prev != NULL)
{
prev->next = entry->next;
}
delete entry;
cout<< "Element Deleted" <<endl;
}
Есть идеи?
Я пробовал это, но это не всегда работает.
void HashTable::Remove(int key,int value)
{
int hash_val = HashFunc(key);
HashNode* entry = htable[hash_val];
while (entry != NULL)
{
if (entry->key == key)
{
if(entry->value == value)
{
delete entry;
break;
}
// cout<<entry->value<<" ";
}
entry = entry->next;
}
}