我刚开始学习哈希表,我知道如何插入,但不知道如何搜索。这是我将立足这个问题,关闭算法:如何搜索哈希表?
哈希键
int Hash (int key) {
return key % 10; //table has a max size of 10
}
线性探测的冲突解决。
假设我打电话的钥匙1,11插入两次,和21这将返回插槽1为所有3个按键。在冲突解决之后,表格将在插槽1,插槽2和插槽3中具有值1,11和21.这是我对插入的理解会发生的事情。
这样做后,我将如何得到插槽2和3,如果我搜索键11和21?从我读过的内容来看,搜索哈希表应该与插入操作完全相同,除非当您到达期望的插槽时,您将返回该插槽的值而不是插入某个值。
如果我采取这种字面上并应用相同的算法,如果我搜索键11我将在插槽4到达,因为它会在插槽1开始,继续向前探索,直到找到一个空槽。即使这是我想要的,它也不会停留在插槽2,因为它不是空的。
我与这个挣扎,即使我使用单独的链接。所有3个密钥将存储在时隙1,但使用相同的算法进行搜索将返回时隙1,而不是链接列表中的哪个节点。
我不知道为什么我不认为我可以使用密钥本身。 – TreeTree
咦?我太想你的问题了。 –