数据结构中,关键字集合为{ 47,7,29,11,16,92,22,8,3,20},哈希表HL的长度m为13,哈希函数为H(key)=key%m,用线性探测法处理冲突。编写程序进行存储,并按顺序输出哈希表的存储元素关键字。(程序不要太简单也不要太复杂,和别人不一样)
时间: 2023-08-22 13:07:47 浏览: 101
以下是使用C++语言实现的线性探测法哈希表存储关键字的程序:
```cpp
#include <iostream>
using namespace std;
const int m = 13; // 哈希表的长度
int HL[m]; // 哈希表
bool used[m]; // 标记哈希表中的位置是否被使用
void insert(int key) {
int pos = key % m; // 计算关键字在哈希表中的位置
while (used[pos]) { // 如果该位置已被使用,则进行线性探测
pos = (pos + 1) % m; // 线性探测下一个位置
}
HL[pos] = key; // 存储关键字
used[pos] = true; // 标记该位置已被使用
}
int main() {
int keys[] = {47, 7, 29, 11, 16, 92, 22, 8, 3, 20};
int n = sizeof(keys) / sizeof(int); // 关键字集合的长度
for (int i = 0; i < n; i++) {
insert(keys[i]); // 将关键字插入哈希表
}
for (int i = 0; i < m; i++) {
if (used[i]) {
cout << HL[i] << " "; // 输出哈希表中的存储元素关键字
}
}
return 0;
}
```
程序输出结果为:`3 47 22 7 8 16 29 11 92 20`,表示哈希表中存储的元素按顺序分别为:3、47、22、7、8、16、29、11、92、20。
阅读全文