3.(10分)线性表的关键字集合key = { 37,12,28,55,20,39,9 },构造哈希表,表长为7(范围0~6),选取哈希函数的方法为“除留余数法”:H ( key ) = key % 7,解决冲突方法为“线性探测再散列”,请按上述条件: (1)求出key中各值的地址,画出相应的哈希表;(4分)
时间: 2024-03-20 19:40:17 浏览: 19
根据除留余数法,计算各元素的地址:
37 % 7 = 2
12 % 7 = 5
28 % 7 = 0
55 % 7 = 6
20 % 7 = 6
39 % 7 = 4
9 % 7 = 2
因为20和55的地址都为6,所以需要进行线性探测再散列,即往后依次探测空闲位置,直到找到一个空闲位置为止。探测的顺序为6,0,1,2,3,4,5。
因此,各元素在哈希表中的地址为:
0: 28
1:
2: 37 -> 9
3:
4: 39
5: 12
6: 55 -> 20
画出相应的哈希表如下:
```
+---+---+---+---+---+---+---+
| 28| |37 | |39 |12 |55 |
+---+---+---+---+---+---+---+
0 1 2 3 4 5 6
```
相关问题
线性表的关键字集合key = { 37,12,28,55,20,39,9 },构造哈希表,表长为7(范围0~6),选取哈希函数的方法为“除留余数法”:H ( key ) = key % 7,解决冲突方法为“线性探测再散列”,请按上述条件: (1)求出key中各值的地址,画出相应的哈希表;
根据除留余数法,将关键字集合中的每个元素除以7取余数,得到的余数即为该元素在哈希表中的地址。
37 % 7 = 2
12 % 7 = 5
28 % 7 = 0
55 % 7 = 6
20 % 7 = 6
39 % 7 = 4
9 % 7 = 2
其中,55和20的哈希地址相同,发生了冲突。根据线性探测再散列的方法,当发生冲突时,依次向后查找哈希表,直到找到空位置为止。具体实现过程如下:
- 首先,将关键字为55的元素插入哈希表的地址为6的位置,得到哈希表为:[0, 0, 2, 0, 0, 0, 55];
- 接着,将关键字为20的元素插入哈希表的地址为6的下一个位置,即地址为0的位置,得到哈希表为:[20, 0, 2, 0, 0, 0, 55];
- 最后,将哈希表中的其它元素插入相应的位置,得到最终的哈希表为:[28, 9, 37, 12, 0, 20, 55]。
下面是哈希表的示意图:
```
哈希地址 0 1 2 3 4 5 6
关键字 28 9 37 12 无 20 55
```
其中,关键字为无的位置表示该位置未被占用。
C语言数据结构线性表实现集合A=A∪B
可以使用循环遍历B中的元素,判断是否在A中出现过,如果没有则将其加入A中。具体实现可以使用数组或链表等数据结构。以下是使用数组实现的示例代码:
```c
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} List;
void unionList(List *A, List B) {
int i, j;
for (i = 0; i < B.length; i++) {
for (j = 0; j < A->length; j++) {
if (B.data[i] == A->data[j]) {
break;
}
}
if (j == A->length) {
A->data[A->length++] = B.data[i];
}
}
}
```
其中,List为线性表结构体,data数组存储元素,length表示线性表长度。unionList函数实现了集合的并操作,将B中的元素加入A中。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)