Pagini recente » Cod sursa (job #115958) | Cod sursa (job #1722495) | Cod sursa (job #422985) | Cod sursa (job #2057018) | Cod sursa (job #244538)
Cod sursa(job #244538)
#include<stdio.h>
#define M 213546
struct nod
{
int info;
nod*adr;
};
nod * p[M],*u[M];
void init()
{
for(int i=0;i<M;++i)
{
p[i]=new nod;
p[i]->adr=NULL;
u[i]=p[i];
}
}
void adauga(nod* &u,int x)
{
nod*aux=new nod;
aux->info=x;
aux->adr=NULL;
u->adr=aux;
u=aux;
}
nod *caut(nod*pr,int x)
{
while(pr->adr && pr->adr->info!=x)
pr=pr->adr;
if(pr->adr)
return pr;
return NULL;
}
void sterge(int nr,int x)
{
nod*pr=p[nr];
nod* q=caut(pr,x);
if(q==NULL)
return;
nod*aux=q->adr;
q->adr=aux->adr;
if(aux->adr==NULL)
u[nr]=q;
delete aux;
}
bool cauta(nod*pr,int x)
{
if(caut(pr,x))
return true;
return false;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int n,op,x;
init();
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&op,&x);
if(op==1)
adauga(u[x%M],x);
if(op==2)
sterge(x%M,x);
if(op==3)
printf("%d\n",cauta(p[x%M],x));
}
return 0;
}