课上有关散列表冲突解决的两种方法的测试的补做

课上有关散列表冲突解决的两种方法的测试的补做

题目

利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75)

关键字集合:85,75,57,60,65,(你的8位学号相加值)20,98,74,89,12,5,46,97,13,69,52,92

开放地址法

步骤
  • 第一首先要确定散列表的模数根据老师给的公式m = n/a 其中n= 17 a= 0.75 所以m=23,取模数为23

  • 第二步画出除以模数之后的余数的表:

  • 之后就是将元素加入到表中:
  1. 将元素按上面给的顺序加入直到第一次冲突都可以直接加入,直接将85、75、57、60、65、20就可直接加入如图:
    课上有关散列表冲突解决的两种方法的测试的补做_第1张图片

2.然后将重复的元素加入,加入时一直顺延直到离原先位置最近的没有元素的位置(不管有没有占据后来元素的位置)一直到最后都没有空的话就回到表头开始顺延直到有空加入元素。在下图中的52 散列地址为15的元素,它取余是6但是6的位置已经被占领后面的位置也一直被其他元素占领直到它在比较了10次之后才找到空位:

结果

拉链法

步骤

  • 第一首先要确定散列表的模数根据老师给的公式m = n/a 其中n= 17 a= 0.75 所以m=23,取模数为23
  • 第二画出一个长度为模数减一的表
  • 第三将元素加入到相应的位置,如果位置被占据就以链表的形式加到相对应的散列地址的位置

    结果

你可能感兴趣的:(课上有关散列表冲突解决的两种方法的测试的补做)