C++ HashTable对象实现

use*_*120 0 c++

int hazmat::hashStr(char const * const str)
{  
    int count = 0;
    for ( unsigned i = 0; i < strlen( str ); i++ )
    {
        count += str[i]; // get the ascii sum.
    }
    return count % maxSize;  
}
Run Code Online (Sandbox Code Playgroud)

Lou*_*nco 5

Ascii sum不是一个很好的哈希函数.以下是一些解释:

http://www.cse.yorku.ca/~oz/hash.html


小智 5

您误解了哈希表的工作原理.您需要分配一个固定长度的数组(在最简单的情况下),然后每个条目必须有一个链表,以便您可以解决重复项.也就是说,两个字符串可能会产生相同的哈希值,您需要遍历链表并比较键.

是的,就像另一张海报所说,添加角色是一种可怕的方法.想一想 - "abc"和"cba"会产生相同的哈希值.