关于哈希表中基于开放寻址的线性探测方法的困惑?

时间:2010-09-12 14:22:57

标签: data-structures hash hash-collision

假设根据字符串“temp”的散列函数的数组索引是155并且位置155被预先占用,则尝试位置156。假设位置156可用,因此该条目保存在位置156而不是155.稍后我找到另一个字符串“another_temp”,它映射到位置156.再次将其保存在下一个可用位置157中。

问题是:如果我想找出“another_temp”的位置,我怎么知道它是157而不是156,即使哈希函数返回156?

感谢。

1 个答案:

答案 0 :(得分:1)

您需要比较密钥,而不仅仅是哈希码。在哈希表中,您无论如何都需要存储密钥(在您的情况下为“temp”和“another_temp”)。仅仅存储和比较哈希值是不够的,因为哈希值不是唯一的。

开放式寻址存在一些问题。一个是:删除条目后该怎么办?通常您存储一个特殊的“已删除”标记。另一个问题是:如果发生冲突,你应该增加哈希码吗?您将在维基百科中找到更多详细信息。