首先是邻接表的实现
const int N = 'n' + 'e' + 'k' + 'o' + 'P';
struct node
{
int v;
int next;
}child[N];
int head[N];
int len = 0;
void addedge(int hash_val,int real_val)
{
child[++len].v = real_val;
child[len].next = head[hash_val];
head[hash_val] = len;
}
int hfind(int hash_val)
{
int i;
for(i=head[hash_val];i;i=child[i].next)
{
//DoSomeThing
}
}
字符串hash一般用这个就可以了
int gethash(char *p)
{
unsigned long long hash = 0;
while(*p)
{
hash = 31 * hash + (*p - 'a' +1);
p++;
}
return hash % N;
}