第 1 页共 6 页实验五查找一、实验目的(1)掌握哈希表的构造和查找过程及其算法设计;(2)掌握哈希表的平均查找长度的计算。二、实验内容编写程序,实现哈希表的相关运算,并完成以下功能:(1)建立关键字序列(16,74,60,43,54,90,46,31,29,88,77)对应的哈希表 A[0..12],哈希函数为 H(k)=k%13,并采用开放地址法中的线性探测法解决冲突。要求输出构造的哈希表。(2)在上述哈希表中查找关键字为 29 的记录,输出其位置和比较次数;(3)在上述哈希表中删除关键字为 77 的记录,再将其插入。(4)输出上述哈希表查找成功时的平均查找长度。三、设计思路及程序代码(包括程序结构(即函数调用关系)、算法功能描述或流程图、程序代码)#include#defineMaxSize100#defineNULLKEY-1#defineDELKEY-2typedefintKeyType;typedefchar*InfoType;typedefstruct{KeyTypekey;InfoTypedata;intcount;}HashData;typedefHashDataHashTable[MaxSize];voidInsertHT(HashTableha,int&n,KeyTypek,intp)/将关键字 k 插入到哈希表中{inti,adr;adr=k%p;if(ha[adr].key 二二 NULLKEY||ha[ad 门.key 二二 DELKEY)//xj 可以直接放在哈希表中{ha[adr].key=k;ha[adr].count=1;第 2 页共 6 页}else{i=1;do{adr=(adr+1)%p;i++;}while(ha[adr].key!=NULLKEY&&ha[adr].key!=DELKEY);ha[adr].key=k;ha[adr].count=i;}n++;}voidCreateHT(HashTableha,KeyTypex[],intn,intm,intp)//创建哈希表{inti,n1=0;for(i=0;i