{ HashList[i].py=\
HashList[i].k=0; HashList[i].si=0;
}
for(i=0;i { int sum=0; int adr=(NameList[i].k)%M; //哈希函数 int d=adr; if(HashList[adr].si==0) //如果不冲突 { HashList[adr].k=NameList[i].k; HashList[adr].py=NameList[i].py; HashList[adr].si=1; } else //冲突 { do { d=(d+NameList[i].k+1)%M; //伪随机探测再散列法处 理冲突 sum=sum+1; //查找次数加1 }while (HashList[d].k!=0); HashList[d].k=NameList[i].k; HashList[d].py=NameList[i].py; HashList[d].si=sum+1; } 3.3 查找哈希表 在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的平均查找长度 void FindList() { char name[20]={0}; } } int s0=0,r,sum=1,adr,d; printf(\请输入姓名的拼音:\ scanf(\ for(r=0;r<20;r++) //求出姓名的拼音所对应的整数(关键字) s0+=name[r]; adr=s0%M; //使用哈希函数 d=adr; if(HashList[adr].k==s0) //分3种情况进行判断 printf(\姓名:%s 关键字:%d 查找长度为: 1\ else if (HashList[adr].k==0) printf(\无此记录!\ else { int g=0; do { d=(d+s0+1)%M; //伪随机探测再散列法处理冲突 sum=sum+1; if(HashList[d].k==0) { printf(\无此记录! \ g=1; } if(HashList[d].k==s0) { printf(\姓名:%s 关键字:%d 查找长度 为:%d\ g=1; } 3.4 显示哈希表 显示哈希表的的格式: \\n地址\\t关键字\\t\\t搜索长度\\tH(key)\\t 姓名\\n void Display() { int i; } } }while(g==0); float average=0;