一、概述
这是哈希的一种算法,算是冲突比较少的,但是也难免会有。
这是我们需要探究的问题,开链法就是好方法之一。
开链法原理比较简单,代码比较玄学,大家要在学习的过程之中动手模拟,才能完全掌握它。
int hash(string h)
{
int seed=37,p=10007;
int ans=0;
int len=h.length();
for(int i=0;i<n;i++)
{
ans=(ans*seed+h[i]-'0')%p;
}
return ans;
}
二、原理分析
结构假如要用形象来表示,就如下图所示:
假如说我们要对以下一些数据进行哈希储存(%53):
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 3 | 51 | 53 | 55 | 105 | 106 | 2 | 52 |
0 | 3 | 51 | 0 |