CurrentPos=(CurrentPos<<6)+*key;什么意思????
long int Find(PtrToHash *hash,char *c) //查找在散列表中的位置{
char *key;
long int CurrentPos,CollisionNum;
key=c;
for(CurrentPos=0;*key;++key) //散列函数,计算散列值
CurrentPos=(CurrentPos<<6)+*key;
CurrentPos%=TabSize; //散列值
CollisionNum=0;//如果当前单元被占用:单元内的元素与当前操作的名字不同,使用平方探测法解决冲突;与当前操作的名字相同,则直接返回在散列中的位置
while((hash[CurrentPos].info)&&(strcmp(hash[CurrentPos].name,c)))
{ //平方探测法
CurrentPos+=2*(++CollisionNum)-1;
if(CurrentPos>=TabSize)
CurrentPos-=TabSize;
}
if((hash[CurrentPos].info)&&(strcmp(hash[CurrentPos].name,c)==0)) //元素已经在散列表里
hashedx=1;
else //元素不在散列表里
hashedx=0;
return CurrentPos;//返回在散列表中的位置
}