Pagini recente » Cod sursa (job #2256882) | Cod sursa (job #2357801) | Cod sursa (job #1439271) | Cod sursa (job #2763251) | Cod sursa (job #254058)
Cod sursa(job #254058)
#include<stdio.h>
#define N 666013
struct nod
{
int info;
nod *adr;
}*v[N];
void adauga_sf(nod*u,int x)
{
nod *aux=new nod;
aux->info=x;
aux->adr=NULL;
u->adr=aux;
}
void adauga(nod*p,int x)
{
while(p->adr)
{
if(p->adr->info==x)
return;
p=p->adr;
}
adauga_sf(p,x);
}
void creare()
{
for(int i=0;i<N;i++)
{
v[i]=new nod;
v[i]->adr=NULL;
}
}
nod * cauta(nod *p, int x)
{
while(p->adr && p->adr->info!=x)
p=p->adr;
if(p->adr!=NULL)
return p;
return NULL;
}
/*
void adauga(nod *p, int x)
{
nod*q=cauta(p,x);
if(q!=NULL)
return;
q=new nod;
q->info=x;
q->adr=p->adr;
p->adr=q;
}
*/
void sterge(nod *p,int x)
{
nod *q=cauta(p,x);
if(q==NULL)
return;
nod *aux=q->adr;
q->adr=aux->adr;
delete aux;
}
void afisare(int x)
{
nod *p=v[x];
p=p->adr;
printf("lista lui %d: ",x);
while(p)
{
printf("%d",p->info);
p=p->adr;
}
printf("\n");
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int op,x,n;
scanf("%d",&n);
creare();
while(n--)
{
scanf("%d%d",&op,&x);
if(op==1)
adauga(v[x%N],x);
if(op==2)
sterge(v[x%N],x);
if(op==3)
printf("%d\n",cauta(v[x%N],x)==NULL ? 0 : 1);
//afisare(x%N);
}
return 0;
}