哈希表
#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;//返回对应元素的下标 }