我正在创建一个使用节点链接的哈希表。什么是碰撞?

时间:2015-04-23 07:01:46

标签: hashtable collision

我似乎无法得到我理解的答案。当你有一个使用链接节点的哈希表时,什么是冲突?

对于要添加的节点所需的索引,每个索引的碰撞是+1吗?

我知道碰撞是不可避免的,我通过研究了解到这一点,但在处理链接节点的哈希表时,我无法弄清楚碰撞的构成。

我的程序在数组(指向节点的指针数组)中找到适当的位置后,将新节点粘贴在前面。每个元素指向指向另一个节点的节点,我基本上有多个链表。因此,冲突计数是否仅包括新节点所属元素的第一个节点,因为我将其粘贴在前面,或者它是否包含该元素的链接列表中的每个单个节点。

例如,如果名称“Smith”转到元素[5],其中还有另外5个链接在一起的节点,并且我将它添加到前面,我将如何确定碰撞计数是什么? / p>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

碰撞是指两个不同的条目通过哈希函数产生相同的输出。

假设您的(设计不佳)哈希函数H包含添加数字的所有数字:

  

5312 - > 5 + 3 + 1 + 2 = 11
  1220 - > 1 + 2 + 2 + 0 = 5

所以H(5312) = 11H(1220) = 5

H有一个很多的碰撞(这就是你不应该使用它的原因):

  

H(4412)= 4 + 4 + 1 + 2 = 11
  H(9200)= 9 + 2 + 0 + 0 = 11
  等...