哈希映射函数错误

时间:2014-07-26 15:30:51

标签: c++ c hash map

我尝试根据下面给出的公式创建哈希函数,并通过另一个函数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;
}

0 个答案:

没有答案