我尝试根据下面给出的公式创建哈希函数,并通过另一个函数23*j+j*j+hash
解决冲突。如果必须检查超过20次碰撞,我不想插入表中,即返回-1
。但是当存在超过20个具有相同散列值的元素时,输入会有一些错误。我无法理解。请帮忙??
int hashi(string key)
{
int ans =0,oo,i;
int len = key.length();
for(i=0; i<len; i++)
{
ans += ((int)key[i]*(i+1));
}
ans = (ans*19)%101;
for(i=0; i<20; i++)
{
oo = 23*i + i*i + ans;
oo = oo%101;
if(m[oo] == key)
{
return -1;
}
if(m[oo] == "")
{
return oo;
}
}
return -1;
}