//注意MAXN是最大不同的HASH个数,一般HASHN式MAXN的两倍左右
//使用前注意初始化hashcnt=0;memset(hashpre,-1,sizeof(hashpre));
//HashNode里面可以储存很多信息,注意灵活使用。
#define HASHN 5000007 struct HashNode { int next; ull key;//关键点 }hashnode[MAXN]; int hashpre[ HASHN ],hashcnt; void hash_insert(ull key) { int hashkey = key%HASHN; for(int p = hashpre[hashkey];p!=-1;p = hashnode[p].next) { ull nkey = hashnode[p].key ; if( nkey == key ) { return ; } } //头插入法,插入新节点。 hashnode[hashcnt].key = key; hashnode[hashcnt].next = hashpre[hashkey]; hashpre[ hashkey ] = hashcnt++; } int hash_find(ull x) { int hashkey = x%HASHN; for(int p=hashpre[hashkey];p!=-1;p=hashnode[p].next) { ull nkey = hashnode[p].key ; if(nkey == x) { return true; } } return false; }
原文:http://www.cnblogs.com/chenhuan001/p/5121812.html