
哈希表的建立和查找(续)
2007 年 06 月 15 日 星期五 11:43
voidFindList() //查找
{
char name[20]={0};
int s0=0,r,sum=1,adr,d;
printf(" 请输入姓名的拼音:");
scanf("%s",name);
for (r=0;r<20;r++)//求出姓名的拼音所对应的整数(关键字)
s0+=name[r];
adr=s0%M;//使用哈希函数
d=adr;
if(HashList[adr].k==s0)//分 3 种情况进行判断
printf(" 姓名:%s关键字:%d查找长度为: 1",HashList[d].py,s0);
else if (HashList[adr].k==0)
printf("无此记录!");
else
{
int g=0;
do
{
d=(d+s0%10+1)%M;//伪随机探测再散列法处理冲突
sum=sum+1;
if (HashList[d].k==0)
{
printf("无此记录! ");
g=1;
}
if (HashList[d].k==s0)
{
printf(" 姓名:%s关键字:%d查找长度为:%d",HashList[d].py,s0,sum);