acwing840模拟散列表,拉链法(模板)

先建一个槽,用公式计算出每一个数对应的槽t,然后每一个槽下吊链表(所有对应公式答案的数)
注意
增加链表Insert()函数是插在最上面不是插在最下,这样可以节省修改

板子
#include <bits/stdc++.h>

using namespace std;

const int N=100005,MOD=100003;
int h[N],e[N],ne[N],idx=1,n,x;//h是槽,e,ne,idx是链表模板 
char op[4];

void Insert(int x){
	int t=(x%MOD+MOD)%MOD;//防止x%mod后是负数 
	e[idx]=x, ne[idx]=h[t], h[t]=idx++;
}
bool Query(int x){
	int t=(x%MOD+MOD)%MOD;
	for(int i=h[t];i;i=ne[i]){//遍历串内是否有x 
		if(e[i]==x) return true;
	}
	return false;
}
int main() {
	scanf("%d",&n);
	while(n--){
		scanf("%s%d",op,&x);
		if(*op=='I') Insert(x);//插入x 
		else if(Query(x)) printf("Yes\n");//是否有x 
		else printf("No\n");
	}
	return 0;
}


全部评论

相关推荐

猪扒已出闸:方向不够聚焦,看不出来是想找什么方向的工作
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务