对于查找集合{16,24,7,9,13,20},设散列表长为8,散列函数为H(key) = key mod 7,请分别画出线性探测法处理冲突构造的散列表。
时间: 2024-12-17 21:43:31 浏览: 6
对于给定的集合{16,24,7,9,13,20},我们使用散列函数H(key) = key mod 7来将元素映射到散列表中,长度为8。因为模运算可能导致溢出,我们需要考虑线性探测法解决冲突。
初始时,我们的散列表会是空的,每个槽位编号从0到7:
```
[ ] [ ] [ ] [ ] [ ] [ ] [ ]
```
首先插入16,H(16) = 16 % 7 = 2,所以它会被放置在第二个槽位,如果2已经被占用,线性探测开始:
```
[ ] [16] [ ] [ ] [ ] [ ] [ ]
```
接下来是24,H(24) = 24 % 7 = 3,同样如果3已经有元素,依次向右移动直到找到空槽:
```
[ ] [16] [ ] [24] [ ] [ ] [ ]
```
接着是7,H(7) = 7 % 7 = 0,填充第一个槽位:
```
[7] [16] [24] [ ] [ ] [ ] [ ]
```
然后是9,H(9) = 9 % 7 = 2,再次与第一个冲突,移动到第二个位置:
```
[7] [9] [24] [ ] [ ] [ ] [16]
```
13的散列值H(13) = 13 % 7 = 6,填充第六个槽位:
```
[7] [9] [24] [ ] [13] [16] [ ]
```
最后是20,H(20) = 20 % 7 = 6,这与13冲突,线性探测,但散列表已满,所以需要在最后一个槽位之后开始搜索:
```
[7] [9] [24] [ ] [13] [20] [16]
```
由于散列表满了,我们将20放在了最右侧,形成了线性探测的结果。
阅读全文