设散列函数为 H(key)=key%11,对于关键码序列(23,40, 91, 17, 19, 10, 31, 65, 26),用线性探查法解决冲突构造的哈希表为()

请先 登录 后评论

1 个回答

亚里士德
擅长:互联网

知识点:数据结构-哈希表

位于354章节。

如果没看书,可能觉得这题在说啥?你要是看了书,或者在其他地方掌握了解题方法,就会发现这就是个送分题啊。

先理解题目中的词语(也可以不理解直接做题),散列函数是什么?我们前面有个题目已经说过了,函数的简单理解,就是用一个值(或者一些值)来确定另一个值。所以这个函数的表达式就是在说,如何通过key值,来确定值所在的位置H(就是hash的简写,hash的中文意思就是一堆混在一起的东西)。百分号就是取余数。

关键码序列是什么?函数表达式中有key,我们懂英文单词的知道这就是关键的意思,所以就是把这个序列的值都通过这个表达式进行计算,最后得出这个值所在的位置。

线性探查法是什么?通过题目描述可以知道这就是用来解决冲突构造的方法的,根据书上描述:"最简单的产生探测序列的方法是进行线性探测,也就是发生冲突时,顺序地到存储区的下一个单元进行探测。",简单理解,就是关键码通过散列函数得到一个值,然后这个值就是这个关键码所在的位置,不过有可能这里在之前已经有另外一个关键码和本次的关键码得到的位置是一样的,也就是位置发生冲突了(也就是hash冲突,也是题目中说的冲突构造),解决办法最简单的就是往后移动一个位置,看有没有值,没有的话就放在这个位置。最后产生的一个值对应一个关键码的一个位置表,这个表就是题目中说的哈希表。

---

明确了概念是不是发现这个题就是一个送分题?因为这个难度就在散列函数,但是这个函数就是一个取余的函数,所以最后构造出来的hash表是:

33524658fd2250db89671bc16da01aa3.png

请先 登录 后评论
  • 1 关注
  • 0 收藏,1002 浏览
  • 亚里士德 提出于 2021-08-25 03:14

相似问题