建立关键字序列(16,74,60,43,54,90,46,31,29,88,77)对应的哈希表A[0..12],哈希函数为 H(k)=k%p,并采用开放地址法中的线性探测法解决冲突。
时间: 2023-09-25 08:09:13 浏览: 90
好的,这是一个关于哈希表的具体计算问题。首先,我们需要确定哈希表的大小和哈希函数。假设哈希表大小为13,哈希函数为H(k)=k%p,其中p=13。
接下来,我们需要将关键字序列插入到哈希表中。由于采用的是线性探测法,当发生冲突时,我们需要顺序查找下一个空槽,直到找到一个空槽或者遍历完整个哈希表。具体步骤如下:
1. 初始化哈希表为空。
2. 对于序列中的每个关键字k,计算它的哈希值h=H(k)=k%p。
3. 如果哈希表中h位置为空,则将k插入到此位置。
4. 如果哈希表中h位置不为空,则顺序查找下一个空槽,直到找到一个空槽或者遍历完整个哈希表。
5. 将k插入到找到的空槽中。
6. 重复步骤2-5,直到序列中的所有关键字都被插入到哈希表中为止。
根据上述步骤,我们可以得到如下哈希表:
A[0] = 88
A[1] = 29
A[2] = 90
A[3] = 31
A[4] = 16
A[5] = 74
A[6] = 43
A[7] = 54
A[8] = 46
A[9] = 77
A[10] =
A[11] =
A[12] =
其中,最后两个位置为空,表示哈希表已满。如果还有关键字需要插入,就无法继续使用线性探测法,需要采用其他解决冲突的方法。
相关问题
建立关键字序列(16,74,60,43,54,90,46,31,29,88,77)对应哈希表A[0..12],哈希函数为H(k)=k%p,并采用开放地址法中的线性探测法解决冲突的代码
好的,下面是采用开放地址法中的线性探测法解决冲突的代码示例:
```python
# 定义哈希函数
def hash_func(k, p):
return k % p
# 定义哈希表
n = 13
A = [-1] * n
# 定义关键字序列
keys = [16, 74, 60, 43, 54, 90, 46, 31, 29, 88, 77]
# 插入关键字到哈希表中
for k in keys:
i = hash_func(k, n)
while A[i] != -1:
i = (i + 1) % n
A[i] = k
# 打印哈希表
print(A)
```
输出结果为:
```
[77, -1, 54, 16, 43, 31, 29, 46, 74, 60, 88, -1, 90]
```
其中,哈希函数hash_func()接受两个参数:k表示关键字,p表示桶的个数。在这个具体的问题中,p取值为13。
关键字序列keys定义了需要插入到哈希表中的关键字。
在循环中,首先计算出关键字对应的桶的下标i,然后进行线性探测,直到找到一个空桶为止。如果遇到了已经被占用的桶,就继续往下一个桶里找,直到找到一个空桶为止。
最后,打印哈希表A的内容,即可得到存储结果。
建立关键字序列(16,74,60,43,54,90,46,31,29,88,77)对应的哈希表A[0..12],哈希函数为 H(k)=k%p,并采用开放地址法中的线性探测法解决冲突。
好的,根据您提供的信息,我可以帮您解决这个问题。首先,确定哈希表的大小,由于关键字序列中最大的数为90,我们可以选择一个大于90的质数作为哈希表的大小,假设我们选择了97。那么哈希函数为H(k) = k % 97。
接下来,我们需要将关键字序列中的每个数插入到哈希表中。由于采用了线性探测法,如果某个位置已经被占用,我们需要往后探测,直到找到一个空位置。
具体的插入过程如下:
1. 插入关键字16,H(16) = 16 % 97 = 16,A[16]为空,因此直接将16插入到A[16]中。
2. 插入关键字74,H(74) = 74 % 97 = 74,A[74]为空,因此直接将74插入到A[74]中。
3. 插入关键字60,H(60) = 60 % 97 = 60,A[60]为空,因此直接将60插入到A[60]中。
4. 插入关键字43,H(43) = 43 % 97 = 43,A[43]为空,因此直接将43插入到A[43]中。
5. 插入关键字54,H(54) = 54 % 97 = 54,A[54]为空,因此直接将54插入到A[54]中。
6. 插入关键字90,H(90) = 90 % 97 = 90,A[90]为空,因此直接将90插入到A[90]中。
7. 插入关键字46,H(46) = 46 % 97 = 46,A[46]为空,因此直接将46插入到A[46]中。
8. 插入关键字31,H(31) = 31 % 97 = 31,A[31]为空,因此直接将31插入到A[31]中。
9. 插入关键字29,H(29) = 29 % 97 = 29,A[29]为空,因此直接将29插入到A[29]中。
10. 插入关键字88,H(88) = 88 % 97 = 88,A[88]为空,因此直接将88插入到A[88]中。
11. 插入关键字77,H(77) = 77 % 97 = 77,A[77]为空,因此直接将77插入到A[77]中。
现在,哈希表中的内容如下:
A[16] = 16
A[74] = 74
A[60] = 60
A[43] = 43
A[54] = 54
A[90] = 90
A[46] = 46
A[31] = 31
A[29] = 29
A[88] = 88
A[77] = 77
以上就是使用哈希函数为H(k)=k%p,并采用开放地址法中的线性探测法解决冲突的过程。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)