ZKX's LAB

使用链地址法解决冲突构造哈希表 用数据结构链地址法解决冲突,编写插入、删除和查找算法

2020-10-10知识16

哈希表采用拉链法处理冲突时平均查找长度?

使用链地址法解决冲突构造哈希表 用数据结构链地址法解决冲突,编写插入、删除和查找算法

链地址法处理冲突的散列表: 试实现用除留余法构造散列表,链地址法处理冲突的散列表类 #includeincludedefine NULLKEY 0/0为无记录标志define N 10/数据元素个数typedef int KeyType;设关键字域为整型typedef struct{KeyType key;int ord;}ElemType;数据元素类型开放定址哈希表的存储结构int hashsize[]={11,19,29,37};哈希表容量递增表,一个合适的素数序列int m=0;哈希表表长,全局变量typedef struct{ElemType*elem;数据元素存储基址,动态分配数组int count;当前数据元素个数int sizeindex;hashsize[sizeindex]为当前容量}HashTable;define SUCCESS 1define UNSUCCESS 0define DUPLICATE-1构造一个空的哈希表int InitHashTable(HashTable*H){int i;(*H).count=0;当前元素个数为0(*H).sizeindex=0;初始存储容量为hashsize[0]m=hashsize[0];(*H).elem=(ElemType*)malloc(m*sizeof(ElemType));if。(*H).elem)exit(0);存储分配失败for(i=0;i;i+)(*H).elem[i].key=NULLKEY;未填记录的标志return 1;}销毁哈希表Hvoid DestroyHashTable(HashTable*H){free((*H).elem);(*H).elem=NULL;(*H).count=0;(*H).sizeindex=0;}一个简单的哈希函数(m为表长,全局变量)unsigned Hash(KeyType K){return K%m;}开放定址法处理冲突。

使用链地址法解决冲突构造哈希表 用数据结构链地址法解决冲突,编写插入、删除和查找算法

数据结构的哈希表中链地址法求解冲突的平均查找长度解法 会的大侠看一下 设散列表的.数据结构的哈希表中链地址法求解冲突的平均查找长度解法 会的大侠看一下 设散列表的。

使用链地址法解决冲突构造哈希表 用数据结构链地址法解决冲突,编写插入、删除和查找算法

数据结构的哈希表中链地址法求解冲突的平均查找长度解法 会的大侠看一下 帮忙详细解答一下怎样算(详细) 25/7=3.4 放到4号位置31/7=4.3 放到3号位子8/7=1.1 1.27/7=3.6.6.13/7=1.6 6号位子被占放到7号位置68/7=9.5 放到5的位置总次数=1+1+1+1+2+1=7平均查找次数=7/6=1.2次当初。

数据结构表,字序列构造哈希表, Hi=(H(key)+di)Mod m,i=1,2,3.,k(k<;=m-1)m为哈希表长,di=1,2,3,4,.m-1,这里m=19,线性探测再散列是增量序列di=1,2,3,.,m-119%13=6,01%13=1,23%13=10,14%13=1,55%13=3,20%13=7 未出现冲突处理84时,84%13=6,但6单元已占用,出现冲突,调用冲突处理函数H1=(H(84)+1)Mod 19=7,但7单元又被占用,再次调用冲突处理函数得H2=(H(84)+2)Mod 19=8,未冲突。以下就不一一列举了,下面把我算得的答案贴一下,可能有误,欢迎指正!表格横着不好对齐我就竖着放吧地址单元 关键字0 011 142 273 554 6856 197 208 84910 2311 1112 1013 771415161718其实线性探测再散列比较特殊,就是查找当前冲突单元往下第一个空闲地址单元,不用算直接用眼睛扫一下就知道下一个应放哪希望我的解答有助于你理解~

#数据结构#哈希表

随机阅读

qrcode
访问手机版