用二叉和哈希都实现了。。
用二叉的话直接用 insert,和search两个函数实现就可以。
用哈希的话找了个字符串的哈希函数:
int hashFunction(char* str)
{
unsigned long h = 0, g;
int nKeyLength=strlen(str);
char *arEnd=str+nKeyLength;
while (str<arEnd)
{
h = (h << 4) + *str++;
if ((g = (h & 0xF0000000)))
{
h = h ^ (g >> 24);
h = h ^ g;
}
}
h=h%tmax;
return h;
}
哈希就是tmax要取好,效果会比较好,
想不用存fo但是这样的话冲突无法得到消除。
冲突的解决办法是”后移法“,没什么新的方法。