//采用开放定值法构造散列表的类型
#define M 997
typedef struct {
KeyType key;
DataType data;
}Nodetype;
typedef Nodetype HashTable[M];
//假设散列函数采用除余法
int h(KeyType k, int m) {
return k % m;
}
//采用线性探查法的散列表查找算法
int HashSearchl(HashTable HT, Keytype k, int m) {
int d, temp;
d = h(k, m);
temp = d;
while (HT[d].key != -32768) {//散列地址中的key不为空
if (HT[d].key == k)
return d;
else
d = (d + 1) % m;
if (d == temp)//查找一周扔无空位置
return -1;
}
return d;//遇到空单元,查找失败
}
//在散列表上插入一个结点
int HashInsertl(HashTable HT, Nodetype s, int m) {
int d;
d = HashSearchl(HT, s.key, m);//查找插入位置
if (d == -1) return -1;//表满
else {
if (HT[d].key == s.key)//表中已有该结点
return 0;
else {
HT[d] = s;
return 1;
}
}
}
线性探查法解决冲突的查找和插入算法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。