Pagini recente » Cod sursa (job #186005) | Cod sursa (job #2856925) | Cod sursa (job #296007) | Cod sursa (job #3193060) | Cod sursa (job #712148)
Cod sursa(job #712148)
#include<stdio.h>
#include<stdlib.h>
#define nr 666013
struct nod
{
int info;
nod *adr_urm;
};
nod *v[666013];
int cauta(int x)
{
int i=x % nr;
nod *prim = v[i]; //functia hash este h(x)=x%nr
while(prim)
{
if(prim->info == x)
return 1;
prim=prim->adr_urm;
}
return 0;
}
void insert(int x)
{
int i=x%nr;
nod *prim = v[i];
if(cauta(x)==0)
{
nod *p=(nod *)malloc(1*sizeof(nod));
p->info=x;
p->adr_urm=prim;
v[i]=p;
}
}
void sterge(int x)
{
if(cauta(x)==1)
{
int i=x%nr;
nod *prim = v[i];
if(prim->info == x)
{
v[i]=prim->adr_urm;
return ;
}
while(prim->adr_urm->info != x)
prim=prim->adr_urm;
prim->adr_urm = prim->adr_urm->adr_urm;
}
}
void afisare()
{
nod *prim = v[0];
while(prim)
{
printf("%i ",prim->info);
prim = prim->adr_urm;
}
printf("\n");
}
int main()
{
int 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);
switch(op)
{
case 1:insert(x);break;
case 2:sterge(x);break;
case 3:fprintf(g,"%i\n",cauta(x));break;
}
afisare();
}
fclose(f);
fclose(g);
return 0;
}