# 基于C语言的哈希查找的设计与实现
# 1 问题描述
编写一个程序实现哈希表的相关运算。
# 2 基本要求
完成如下功能:
- 建立{16,74,60,43,54,90。46,31,29,88,77}哈希表A[0..12],哈希函数为H(k)=key%p,并用线性探查法解决冲突
- 在上述哈希表中查找关键字为29的记录
- 在上述哈希表中删除关键字为77的记录,再将其插入
# 3 算法思想
- CreatHT()通过m次循环对哈希表初始化
- InsertHT()通过循环体将数组内元素放入哈希表中
- SearchHT()采用线性探查法找下一个地址
- DeleteHT()调用SearchHT()找到该关键字并删除
- DispHT()利用循环体输出哈希表
# 4 模块划分
```c++
// 创建哈希表
void CreatHT(HashTable ha,int x[],int n,int m,int p);
// 将关键字插入到哈希表中
int InsertHT(HashTable ha,int n,int k,int p);
// 在哈希表中查找关键字
int SearchHT(HashTable ha,int p,int k);
// 删除哈希表中的某一关键字
int DeleteHT(HashTable ha,int p,int k,int n);
```
# 5 数据结构
数据类型HashTablep[]定义如下:
```c++
typedef struct HashTable
{
int key;
char* data;
int count;
}HashTable[100];
```
# 6 测试
![](http://www.writebug.com/myres/static/uploads/2021/10/19/94ff32bac398ecbb0a667cc40157fefb.writebug)