哈希表 已知哈希表长度为 8,哈希函数为 H(k)=kmod7,采用线性探测法处理冲突。 将下列关键字依次插入到哈希表中, 34, 37, 20, 16, 13 请写出存入数据后的哈希表。
时间: 2024-05-27 16:09:40 浏览: 537
输入一组关键字,并建立哈希表的算法(用链地址法来处理冲突)
5星 · 资源好评率100%
首先,根据哈希函数 H(k)=kmod7,可以得到每个关键字的哈希地址:
- H(34) = 5
- H(37) = 2
- H(20) = 6
- H(16) = 2 (冲突)
- H(13) = 6 (冲突)
因为 16 和 13 的哈希地址与已经插入的关键字冲突,所以需要采用线性探测法解决冲突。
首先,将 34 存储在哈希表的第 5 个位置(因为 H(34) = 5),哈希表变为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| | | | | |34 | | |
接着,将 37 存储在哈希表的第 2 个位置(因为 H(37) = 2),哈希表变为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| | |37 | | |34 | | |
然后,将 20 存储在哈希表的第 6 个位置(因为 H(20) = 6),哈希表变为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| | |37 | | |34 |20 | |
接着,将 16 存储在哈希表的第 3 个位置(因为 H(16) = 2+1 = 3,从第 3 个位置开始向后探测),哈希表变为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| | |37 |16 | |34 |20 | |
最后,将 13 存储在哈希表的第 4 个位置(因为 H(13) = 6+1 = 7,从第 7 个位置开始向后探测,但因为哈希表长度为 8,所以要回到第 0 个位置继续探测),哈希表变为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| | |37 |16 |13 |34 |20 | |
因此,最终的哈希表为:{37, 16, 13, 34, 20}。
阅读全文