}
flag=0;//还原标志变量使程序可以多次查找
}
//******************************************************************
//*************************4.散列查找*******************************(正确运行)
intCreate_hashlist()//建立哈希表
{
intadd,newadd,di;
if(N+N/10+1>MAXSIZE)//确保hashlist表长比N大于10%以上
{
return0;
}
hashlist_length=N+N/10;//确定hashlist数组的长度为hashlist_length(即:
N的110%)
for(inti=0;ifor(i=0;i{
add=int(a[i].score)/15;//哈希函数H(K)=K%m;
newadd=add;
di=1;//增量di
while(hashlist[newadd]){
newadd=(add+di)%hashlist_length;//New_addr=(addr+di)%m(m为hashlist的长度,di=1,2,3,4,5…)
di++;
}
hashlist[newadd]=a[i].score;
}
return1;
}//哈希表成功建立!
intfind(floatsearchscore)//查找searchscore
{
intadd,newadd,di;
add=int(searchscore)/15;//哈希函数H(K)
newadd=add;
di=1;
while((hashlist[newadd]!
=searchscore)&&(hashlist[newadd