Pagini recente » Cod sursa (job #803982) | Cod sursa (job #2655771) | Cod sursa (job #1637708) | Cod sursa (job #1899794) | Cod sursa (job #2106215)
#include <stdio.h>
#include <stdlib.h>
#define Prim 666013
FILE *f;
FILE *g;
typedef struct element
{
int info;
struct element *urm;
} element;
element *h[Prim+5];
int query ( int x)
{
int poz;
poz=x%Prim;
element *p;
if (h[poz]==NULL) return 0; //daca lista e goala returnez 0
p=h[poz];
while (p!=NULL)
{
if (p->info==x) return 1;//daca e in lista, l am gasit
p=p->urm;
}
return 0; //daca nu s a gasit in liste returnez 0
}
void adaugare (int x)
{
int poz,ok=0;
poz=x%Prim;
element *p,*q;
p=h[poz];
while (p!=NULL)
{
if (p->info==x) ok=1;//daca e in lista, l am gasit
p=p->urm;
}
if (ok==0) //daca nu e in lista, il adaug
{ q=(element *) malloc (sizeof(element));
q->info=x;
q->urm=h[poz];
h[poz]=q;
}
}
void stergere (int x)
{
int poz,ok=0;
element *p,*p1;
poz=x%Prim;
p=h[poz];
if (p==NULL) return;
p1=p->urm;
if (p1==NULL&&p->info==x) h[poz]=NULL;
else
while (p1!=NULL)
{
if (p1->info==x) {p->urm=p1->urm; break;}//sterg legatura dintre p si p1
p1=p1->urm;
p=p->urm;
}
}
int main()
{
f=fopen("hashuri.in","r");
g=fopen("hashuri.out","w");
int i,n,x,y;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(f,"%d %d",&x,&y);
if (x==1) adaugare(y);
if (x==2) stergere(y);
if (x==3) fprintf(g,"%d \n",query(y));
}
return 0;
}