资源简介
选取哈西函数h(k)=k%11,用线性探测在散列方法处理冲突。是在0-10的散列地址中,对关键序列(22,41,53,46,30,01,67)构造哈希表并求等概率情
况下查找成功与不成功过的平均查找长度
代码片段和文件信息
/*第八章,12题 选取哈西函数h(k)=k%11,用线性探测在散列方法处理冲突。是
在0-10的散列地址中,对关键序列(22415346300167)构造哈希表并求等概率情
况下查找成功与不成功过的平均查找长度*/
#include
#include
#define m 11
#define NULLKEY 0
typedef int KeyType; /* 假设关键字为整型 */
typedef struct
{
KeyType key;
}RecordType;
typedef RecordType HashTable[m];
int hash(KeyType k)/*选取哈西函数h(k)=k%11对传入的随便的一个
整数,返回经过哈西函数计算后的的一个数*/
{
int h;
h=(3*k)%m;
return h;
}
int HashSearch( HashTable ht KeyType K) /*传入插入数据后的哈希表的首地址
和要查找的数值,返回找到的数据值的地址*/
{
int h0;
int i;
int hi;
h0=hash(K);
if (ht[h0].key==NULLKEY) /*这个地址没有存数据*/
return (-1); /*没有找到数据*/
else
if (ht[h0].key==K) /*直接就找到该地址*/
return (h0); /*返回该地址*/
else /* 有冲突,用线性探测再散列解决冲突 */
{
for (i=1; i<=m-1; i++)
{
hi=(3*h0+i) % m;
if (ht[hi].key==NULLKEY) /*这个地址没有存数据*/
return (-1);
- 上一篇:C语言读取dat文件
- 下一篇:单片机C语言 广告流水灯中断控制含 DSN
评论
共有 条评论