题目
答案
Position Find( HashTable H, ElementType Key )
{
int i,flag=0;
i=Hash(Key,H->TableSize);
while(H->Cells[i].Info!=Empty&&H->Cells[i].Data!=Key)
{
if(i==H->TableSize&&flag==0)
{
i=0;
flag=1;
}
else if(i==H->TableSize) return ERROR;
else i++;
}
return i;
}
思路
在通过Hash函数获取Key的第一位置后,在从这个位置遍历Cell数组,如果第一遍没找到,flag变量赋值1,再给它一次机会(因为它有可能是从中间向后遍历,前面的还没遍历),找到了就返回对应的位置,否则返回ERROR