Удалить указанный элемент из ключа HashTable c ++ - PullRequest
0 голосов
/ 28 мая 2018

Здравствуйте, я хочу удалить указанный элемент из ключа в хеш-таблице, но функция, которая у меня есть, удаляет последнее значение, которое я вставил в ключ. Мне нужно два аргумента в моей функции. Например, я хочу удалить элемент 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...