Pagini recente » Cod sursa (job #653418) | Cod sursa (job #2053722) | Cod sursa (job #1869170) | Cod sursa (job #2624964) | Cod sursa (job #723929)
Cod sursa(job #723929)
#include <cstdio>
#define prim 4019
using namespace std;
struct hash{ int val; hash *urm; }*L[prim];
int find(int x)
{ hash *aux;
for(aux=L[x%prim];aux!=NULL;aux=aux->urm)
if(aux->val==x)return 1;
return 0;
}
void add(int x)
{ hash *aux;
aux=new hash; aux->val=x; aux->urm=L[x%prim]; L[x%prim]=aux;
}
void erase(int x)
{ hash *adr,*aux,*pnt;
if(L[x%prim]!=NULL)
{
if(L[x%prim]->val==x)
{
adr=L[x%prim]; L[x%prim]=L[x%prim]->urm; delete adr;
}
else {
adr=NULL;
for(aux=L[x%prim];aux->urm!=NULL&&adr==NULL;aux=aux->urm)
if(aux->urm->val==x){ adr=aux->urm; pnt=aux; }
pnt->urm=adr->urm; delete adr;
}
}
}
int main()
{ int i,op,x,n;
freopen("hashuri.out","w",stdout);
freopen("hashuri.in","r",stdin); scanf("%d\n",&n);
for(i=1;i<=n;++i)
{
scanf("%d %d\n",&op,&x);
switch(op)
{
case 1:
if(find(x)==0)add(x);
break;
case 2:
erase(x);
break;
case 3:
printf("%d\n",find(x));
break;
}
}
return 0;
}