#include <stdio.h>
#define HASH_LEN 13
#define TABLE_LEN 8
int data[TABLE_LEN]={69,65,90,37,92,6,28,54}; //原始数据
int hash[HASH_LEN]={0};//哈希表,初始化为0
void InsertHash(int hash[],int m,int data)
{
int i;
i=data % 13;//计算哈希地址
while(hash[i]) //元素位置已被占用
i=(++i) % m; //线性探测法解决冲突,i加1向后移动
hash[i]=data;
}
void CreateHash(int hash[],int m,int data[],int n)
{
int i;
for(i=0;i<n;i++) //循环将原始数据保存到哈希表中
InsertHash(hash,m,data[i]);
}
int HashSearch(int hash[],int m,int key)
{
int i;
i=key % 13;//计算哈希地址
while(hash[i] && hash[i]!=key) //判断是否冲突
i=(++i) % m; //线性探测法解决冲突
if(hash[i]==0) //查找到开放单元0,表示查找失败
return -1;//返回失败值
else//查找成功
return i;//返回对应元素的下标
}