void print(int p) { printf("%d\t",p); } int Find(HashTable H,KeyType K,int &p) { // 在开放定址哈希表H中查找关键码为K的元素,若查找成功,以p指示待查数据 // 元素在表中位置,并返回SUCCESS;否则,返回UNSUCCESS /********** Begin **********/ /********** End **********/ }补全代码
时间: 2023-07-06 13:40:54 浏览: 50
好的,请看下面的代码:
```c++
#define MAXSIZE 100 // 哈希表的最大长度
#define SUCCESS 1 // 查找成功
#define UNSUCCESS 0 // 查找失败
#define NULLKEY -32768 // 哈希表单元为空的特殊标志
typedef int KeyType;
typedef struct {
KeyType key; // 关键字
int count; // 记录查找不成功次数
}ElemType;
typedef struct {
ElemType *elem; // 数据元素的基址,动态分配数组
int count; // 当前哈希表中的元素个数
}HashTable;
// 初始化哈希表
void InitHashTable(HashTable &H) {
H.elem = new ElemType[MAXSIZE];
H.count = MAXSIZE;
for(int i = 0; i < H.count; i++) {
H.elem[i].key = NULLKEY;
H.elem[i].count = 0;
}
}
// 哈希函数
int Hash(KeyType key) {
return key % MAXSIZE;
}
// 插入关键字
void InsertHash(HashTable &H, KeyType key) {
int addr = Hash(key);
while(H.elem[addr].key != NULLKEY) {
addr = (addr + 1) % MAXSIZE;
}
H.elem[addr].key = key;
}
// 查找关键字
int Find(HashTable H, KeyType K, int &p) {
int addr = Hash(K);
while(H.elem[addr].key != K) {
addr = (addr + 1) % MAXSIZE;
if(H.elem[addr].key == NULLKEY || addr == Hash(K)) {
p = addr;
return UNSUCCESS;
}
}
p = addr;
return SUCCESS;
}
```
此代码实现了一个开放定址哈希表,其中包括了哈希表的初始化、哈希函数、插入关键字和查找关键字等操作。在查找关键字时,若查找成功,则返回 SUCCESS 和待查数据元素在表中位置 p;否则,返回 UNSUCCESS 和待查数据元素应插入的位置 p。
相关推荐
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)