Pagini recente » Cod sursa (job #2365080) | Cod sursa (job #2729660) | Cod sursa (job #1838819) | Cod sursa (job #1328663) | Cod sursa (job #711072)
Cod sursa(job #711072)
#include<stdio.h>
#include<stdlib.h>
#define nr 666013
struct nod
{
int info;
nod *adr_urm;
};
nod *v[666012];
int cauta(nod *v[],int x)
{
int i=x % nr; //functia hash este h(x)=x%nr
while(v[i])
{
if(v[i]->info == x)
return 1;
v[i]=v[i]->adr_urm;
}
return 0;
}
void insert(nod *v[],int x)
{
int i=x%nr;
if(cauta(v,x)==0)
{
nod *p=(nod *)malloc(1*sizeof(nod));
p->info=x;
p->adr_urm=v[i];
v[i]=p;
}
}
void sterge(nod *v[],int x)
{
if(cauta(v,x)==1)
{
int i=x%nr;
if(v[i]->info == x)
{
v[i]=v[i]->adr_urm;
return ;
}
while(v[i]->adr_urm->info != x)
v[i]=v[i]->adr_urm;
v[i]->adr_urm = v[i]->adr_urm->adr_urm;
}
}
int main()
{
int n,i,N,op,x;
FILE *f=fopen("hashuri.in","rt");
FILE *g=fopen("hashuri.out","wt");
fscanf(f,"%i",&N);
for(i=0;i<N;i++)
{
fscanf(f,"%i%i",&op,&x);
if(op==1)
insert(v,x);
if(op==2)
sterge(v,x);
else if(op==3)
fprintf(g,"%i\n",cauta(v,x));
}
return 0;
}