从键HashTable c ++中删除指定的元素

时间:2018-05-28 20:21:27

标签: c++ pointers hashtable

你好我想从哈希表中的键中删除指定的元素但是我有的函数,删除我插入到键中的最后一个值。我需要两个参数进入我的函数。例如我想要删除元素3来自关键1。

Key:1 Elements:2 4 3

Key:2 Elements: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;
    }
}

0 个答案:

没有答案