要求O(1) 查找元素的存在
struct HashMap{ static const int Hash=999917,maxn=46340; int num,link[Hash],son[maxn+5],next[maxn+5],w[maxn+5]; int top,Stack[maxn+5]; void clear(){ num=0; while(top) link[Stack[top--]]=0; } void add(int x,int y){//添加键值元素 son[++num]=y; next[num]=link[x]; w[num]=INF; link[x]=num; } bool count(int y){ int x=y%Hash; for(int j=link[x];j;j=next[j]) if(y==son[j]) return true; return false; } int &operator [](int y){ int x=y%Hash; for(int j=link[x];j;j=next[j]) if(y==son[j]) return w[j]; add(x,y); Stack[++top]=x; return w[num]; } }mp ;
标签:int,top,son,num,maxn,哈希,link From: https://www.cnblogs.com/towboa/p/17367891.html