Pagini recente » Cod sursa (job #2160236) | Cod sursa (job #2932863) | Cod sursa (job #1166353) | Cod sursa (job #301510) | Cod sursa (job #710610)
Cod sursa(job #710610)
#include<stdio.h>
#include<stdlib.h>
#define nr 666013
struct nod
{
int info;
nod *adr_urm;
};
nod *v[1000];
int search(nod *v[1000],int x,int m)
{
int i=x % m; //functia hash este h(x)=x%m
while(v[i])
{
if(v[i]->info == x)
return 1;
v[i]=v[i]->adr_urm;
}
return 0;
}
void insert(nod *v[1000],int x,int m)
{
int i=x%m;
if(search(v,x,m)==0)
{
nod *p=(nod *)malloc(1*sizeof(nod));
p->info=x;
p->adr_urm=v[i];
v[i]=p;
}
}
void sterge(nod *v[1000],int x,int m)
{
if(search(v,x,m)==1)
{
int i=x%m;
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)
if(search(v,x,nr)==0)
insert(v,x,nr);
if(op==2)
sterge(v,x,nr);
else if(op==3)
fprintf(g,"%i\n",search(v,x,nr));
}
return 0;
}