题目要求:

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

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

实现过程

  • 1.首先除留余数法分为用数组和链表实现
  • 2.实现这个方法我们需要下列公式(图片)
  • 3.当我们把想要的数字(素数、H(key)、m)求出来后,首先我们需要对所有数字:85,75,57,60,65,24(你的8位学号相加值),98,74,89,12,5,46,97,13,69,52,92的余数进行一次排序(从小到大),然后将数组或者链表画出来,将余数分别添加到对应的下标里。
  • 4.需要注意的是,当出现冲突时我们应该怎么做,冲突我们可以参照课本P430的链式方法或者是用溢出区的办法。
  • 5.我使用的是链式方法,课堂上已经画出了解决方案。
  • 6.开放寻址法,参考这一页PPT,一开始我对开放寻址法如何解决冲突的余数的理解是:随便放。后面我问过王志强老师后,他告诉我:要的是线性。而且当出现这种情况时(图片)我们要按照谁先录入谁先放的原则,并且从左到右放。

结果

  • 链式方法实现结果:

  • 开放寻址法实现结果

posted on 2017-11-27 23:15  20162319莫礼钟  阅读(196)  评论(0编辑  收藏  举报