资源描述
#include"stdio.h"
#include"math.h"
typedef struct
{
int key;
int m;
}Hashtable;
Hashtable hash[45];
searchhash(int p,Hashtable hash[])
{
int d=0,f;
do
{
f=(p+d)%45;
if(hash[f].key==0)
{
printf("找的姓名不存在\n");return 0;}
d++;
}while(hash[f].key!=p&&d==45);
while(hash[f].key!=0)
if(d!=45)
{printf("所要找的姓名的%d存的哈希地址是%d\n",p,f);return 1;}
else
{printf("所要找的姓名在哈希表中不存在\n");return 0;}}
void main()
{
char name[20];int number[3];
int i,j,d=0,x=0,f,k,p=0,q=0;
for(i=0;i<45;i++)
{
hash[i].key=0;hash[i].m=0;}
for(i=0;i<3;i++)
{
printf("请输入所有姓名信息\n");
scanf("%s",name);
for(j=0;name[j]!='\0'&&j<20;++j)
{
printf("%c",name[j]);
x=x+(int)name[j];
printf("%d",x);
}number[i]=x;
x=0;
}
for(i=0;i<3;i++)
{
do
{
f=(number[i]+d)%45;
p++;hash[f].m=p;
d++;
}while(hash[f].key!=0);
hash[f].key=number[i];
d=0;
}
printf("请输入将要查找的姓名信息\n");
scanf("%s",name);
for(j=0;name[j]!='\0'&&i<20;j++)
x=x+(int)name[j];
searchhash(x,hash);
}
展开阅读全文