已知散列表的存储空间为 T[0, …, 16] , 散列函数为 H(k)=k mod 17, 用二次探测法解决冲突。 散列表中已插入下列关键字: T[5] =39、 T[6] =57 和 T[7] =7,则下一个关键字值 23 在该散列表中插入的位置是()

已知散列表的存储空间为 T[0, …, 16] , 散列函数为 H(k)=k mod 17, 用二次探测法解决冲突。 散列表中已插入下列关键字: T[5] =39、 T[6] =57 和 T[7] =7,则下一个关键字值 23 在该散列表中插入的位置是()


A、

 T[2]


B、

T[4]


C、

T[8]


D、

T[10]


【正确答案】:D
【题目解析】:

二次探测法的基本思想: 生成的后继散列地址不是连续的, 而是跳跃式的, 以便为后续数据元素留下空间从而减少堆积。 按照二次探测法, 键值 key 的散列地址序列为 d0=H(key) , di=(d0+i) mod m。 其中, m 为散列表的表长, i=1², -1²,2², -2², …, ±k²(k≤m/2) 。 本题中, key=23, m=17, 插入 23 时, d0=6(17 mod 23), 有冲突; d1=(6+1²) mod 17=7,有冲突, d2=(6-1²) mod 17=5, 有冲突; d3=(6+2²) mod 17=10,因其位置无元素, 故将 23 插入到 T[10] 中。


Top