• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签: 哈西函数  

资源简介

选取哈西函数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);     

评论

共有 条评论

相关资源