我只需要对c ++代码做一些澄清。
根据http://www.sanfoundry.com/cpp-program-hash-tables-doubly-linked-list/,
我发现用户需要输入value
和key
。我可以理解为什么用户需要输入value
,但为什么世界上用户需要输入key
?
1)我们知道元素将通过使用哈希函数定位到哈希表中(例如:modulo: element%TABLE_SIZE )。但是在这段代码中,他们要求用户输入他们想要将值放入哈希表中的位置数:
"Enter key at which element to be inserted: ";
根据我的理解,由于存在哈希函数,用户永远不会允许输入他们所选择的位置或键元素。
我很迷茫,所以请帮助我,我知道这里有很多专家,所以这就是为什么我在这里寻找答案
答案 0 :(得分:0)
通常,哈希表存储键值对。
也许在你的心智模型中有一个哈希表的简化版本,其中密钥是根据值计算的?
答案 1 :(得分:0)
通常的方法是从密钥计算哈希值,从哈希值计算表中的首选索引,加上(希望很少)一系列备选索引。哈希值应该以尽可能接近随机的方式计算。首选索引通常只是散列值模数表大小。使用或多或少复杂的算法计算替代索引 - 在最简单的情况下,仅用(散列值+ i)第i个替换地址的模数表大小。
从来没有,我曾经看到过要求用户或软件开发人员提供替代索引的哈希表实现。
实际上,哈希表之外的任何数据存储(例如双链表)都已经过时了。你只需要使哈希表足够大并且哈希函数足够好以避免冲突,如果数据量增加,那么你会在用户的后面自动分配一个更大的表