线性探查法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设散列表地址空间为0到10,散列表函数为h(k)=k mod 11,用线性探查法解决碰撞。现从空的散列表开始,依次插
按键码值95,14,27,68,82,则最后一个关键码82的地址是多少?
求详细解题过程及原理,要详细呀!
最佳答案 哈希存储的基本原理是将元素的值(如95、14等)进行哈希计算得到哈希地址,再将其存储到指定地址。如果该地址已有元素,称之为存在“冲突”,再采用冲突检测法处理冲突,如线性探测再散列法。
如元素的值为95时,采用哈希函数h(k)=k mod 11时,得到的哈希地址为7,即h(95) = 95 % 11 = 7。
针对本题:
(1)构造哈希表,有11个地址空间(0~10);
(2)计算各个元素的哈希地址,若没有冲突,则直接存储到相应地址的哈希表中:
h(95) = 95 % 11 = 7 没有冲突
h(14) = 14 % 11 = 3 没有冲突
h(27) = 27 % 11 = 5 没有冲突
h(68) = 68 % 11 = 2 没有冲突
h(82) = 82 % 11 = 5 有冲突(因为地址5已经被值为27的元素占用了)
(3)对于有冲突的元素,发生冲突后必须马上处理(采用线性探查法),不能到最后一起处理:
h(82) = (5 + 1) % 11 = 6 没有冲突
(4)最后哈希表0~10的11个地址空间依次存储的元素为:
0 1 2 3 4 5 6 7 8 9 10
N N 68 14 N 27 82 95 N N N
其中N表示此处为空。