void FindName()
{
char name[11] = {0};
int hashCode = 0, si = 1;
printf("\n请输入想要查找的姓名的拼音:");
scanf("%s", name);
getchar();
hashCode = gethashCode(name); //求出姓名的拼音所对应的ASCII作为关键字
int adr = hashCode % P; //除留余数法去地址
int j = 0;
// 如果hash地址为空,则直接认为不存在
if (Hash[adr].key == 0)
{
printf("\n没有想要查找的人!\n");
return;
}
// 如果hashCode和name都相等
if (Hash[adr].key == hashCode && 0 == strcmp(Hash[adr].name, name))
{
printf("\n姓名:%s 关键字:%d 生日:%s 地址:%d 查找长度为: 1\n", Hash[adr].name, hashCode, Hash[adr].data,adr);
}
// 如果不相等,则进行线性探测搜索
else
{
int currAddr = adr;
//从冲突下一个位置开始探测,到达最后一个再从第一个开始
do
{
si++; // 查找长度+1
adr = (adr + 1) % HASH_LEN;
// 如果找到,直接break跳出循环
if (Hash[adr].key == hashCode && 0 == strcmp(Hash[adr].name, name))
{
printf("\n姓名:%s 关键字:%d 生日:%s 地址:%d 查找长度为:%d\n", Hash[adr].name, hashCode,Hash[adr].data ,adr , si);
break;
}
} while (adr != currAddr);
// 直到回到当前位置时还没找到,说明不存在
if (adr == currAddr)
{
printf("\n没有想要查找的人!\n");
return;
}
}
}
标题是问题,还是代码是问题