关于哈希表的一道习题,望大神解答~?

设哈希表的地址范围为0~17,哈希函数为:H(key)=key%16。用线性探测法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,... 设哈希表的地址范围为0~17,哈希函数为:H(key) = key % 16。用线性探测法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49),构造哈希表。求哈希表示意图。
我就是搞不明白哈希地址地址下标最大为17,而求余操作最大为15,求出的哈希表的16和17位有元素吗?就像本题,到放入46的时候,是放在16位置还是放在2位置?
展开
 我来答
我的资料_yj
2014-12-09
知道答主
回答量:20
采纳率:0%
帮助的人:23.1万
展开全部
呵呵,这也是我曾经最搞不懂的地方呀,这个就是出题人给出来的一系列的条件而已,不要过多的考虑为什么,取不到怎么办。这个就是要明确3点:1、哈希函数,2、冲突处理方式,3、哈希表地址范围。一般情况就是哈希函数的取余值的大小与哈希表地址范围一致,但也会出现题目中的这种不一致的情况,而这里的不一致有时候是有理由的,不如这里采用线性探测再散列的方式处理冲突,是取di=1,2,3,4,....m-1的,当这里的15位置被占用时,就是要取在下一个位置了,直到达到散列地址的最大值。

另外看了一下你贴出来的图片,明白了你的问题在哪里。你要明确一点:在书本上的开放定址法的公式是怎么样的:H(key)=(H(key)+di)%m,i为1,2,3,...,m-1
比如46,第一次的H(key)值为15,已经被占用,那么再次计算时H(key)=(15+1)%m,要注意了,这里的m是18还是16?????定义上的m值是指的哈希表的长度,而不是哈希函数中的16。所以你的上面的是正确的。这也是曾经困扰我很长时间的问题呀,再次遇到了,解答一下,不要嫌啰嗦。OVER。
全测科技
2024-12-19 广告
N8975B噪声系数分析仪是深圳市全测科技有限公司推荐的一款高性能设备,由是德科技(Keysight)生产。该分析仪能在10MHz至26.5GHz的宽频率范围内提供快速、准确的噪声系数测量,支持多点触控界面,简化了操作过程。N8975B配备... 点击进入详情页
本回答由全测科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式