哈希表查找过程中的插入
彩色字体部分,不知道要怎么赋值了。 void HashSearch()
{
char name[10]={0};
char *q;
int s=0,sum=1,adr,k,j;
printf("please input the name for search:");
scanf("%s",name);
q=name;
for(j=0;*(q+j)!='\0';j++)
{
s+=*(q+j);
adr=s%P;
}
if(Hashlist[adr].key==s&&!strcmp(Hashlist[adr].name,name))
{
printf("adr:%d name:%s key:%d m:%d\n",adr,Hashlist[adr].name,Hashlist[adr].key,Hashlist[adr].m);
printf("found!delete or not?(0 is not,1 denoted delete)\n");
scanf("%d",&k);
if(k==1)
{
Hashlist[adr].name='\0';
Hashlist[adr].key=0;
Hashlist[adr].m=0;
}
}
else if(Hashlist[adr].key==0)
{
printf("no found!will inserting\n");
Hashlist[adr].name=q;
Hashlist[adr].key=s;
Hashlist[adr].m=1;
printf("have inserted!\n");
}
else
{
while(1)
{
adr=(adr+Q)%P;
sum=sum+1;
if(Hashlist[adr].key==0)
{
printf("no found!\n");
if(sum<10)
{
Hashlist[adr].name=q;
Hashlist[adr].key=s;
Hashlist[adr].m=1;
printf("have inserted!\n");
break;
}
}
if(Hashlist[adr].key==s&&!strcmp(Hashlist[adr].name,name))
{
printf("adr:%d name:%s key:%d m:%d\n",adr,Hashlist[adr].name,Hashlist[adr].key,Hashlist[adr].m);
printf("found!delete or not?(0 is not,1 denoted delete)\n");
scanf("%d",&k);
if(k==1)
{
Hashlist[adr].name='\0';
Hashlist[adr].key=0;
Hashlist[adr].m=0;
}
printf("have deleted!\n");
break;
}
}
}
}