c语言实现选取哈稀函数H(k)=(3k)MOD 11。用开放定址法处理冲突,di=i(i=1,2,3,…).试在0-10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表哈希查找方法。
时间: 2024-02-26 07:54:54 浏览: 115
好的,让我来回答这个问题。首先,我们需要将关键字序列(22,41,53,46,30,13,01,67)哈希到0-10的散列地址空间中。根据哈希函数H(k) = (3k)MOD 11,我们可以得到以下哈希值:
H(22) = 9
H(41) = 4
H(53) = 5
H(46) = 8
H(30) = 7
H(13) = 6
H(01) = 3
H(67) = 1
接下来,我们使用开放定址法来解决冲突。根据题目要求,我们使用线性探测法,即当发生冲突时,依次向后探测,直到找到一个空闲的位置。
将关键字序列插入哈希表的过程如下:
插入关键字22,哈希值为9,存放在哈希表的第9个位置。
插入关键字41,哈希值为4,存放在哈希表的第4个位置。
插入关键字53,哈希值为5,存放在哈希表的第5个位置。
插入关键字46,哈希值为8,存放在哈希表的第8个位置。
插入关键字30,哈希值为7,存放在哈希表的第7个位置。
插入关键字13,哈希值为6,存放在哈希表的第6个位置。
插入关键字01,哈希值为3,存放在哈希表的第3个位置。
插入关键字67,哈希值为1,存放在哈希表的第1个位置。
最终得到的哈希表如下:
0:
1:67
2:
3:01
4:41
5:53
6:13
7:30
8:46
9:22
10:
现在,如果我们要查找关键字13,根据哈希函数H(13) = 6,我们首先检查哈希表的第6个位置是否存储了关键字13。由于哈希表的第6个位置存储的是关键字13,我们可以立即找到该关键字。如果我们要查找的关键字不在哈希表中,我们将会继续向后探测,直到找到空闲的位置或者回到起始位置为止。
阅读全文