我剛開始學習哈希表,我知道如何插入,但不知道如何搜索。這是我將立足這個問題,關閉算法:如何搜索哈希表?
哈希鍵
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
咦?我太想你的問題了。 –