Cod sursa(job #1764016)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 24 septembrie 2016 21:41:46
Problema Hashuri Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 1.29 kb
#include <stdio.h>
#include <stdlib.h>
#define MOD 666013
typedef struct Nod
{
    int info;
    struct Nod *adr;
}nod;
nod* hash[MOD];
inline int caut(int x)
{
    nod *i;
    for(i=hash[x%MOD];i;i=i->adr)
        if(i->info==x)
            break;
    return (i>0);
}
inline void add(int x)
{
    if(!caut(x))
    {
        nod *c=(nod *) malloc(sizeof(nod));
        c->info=x;
        c->adr=hash[x%MOD];
        hash[x%MOD]=c;
    }
}
inline void sterg(int x)
{
    nod *i=hash[x%MOD],*c;
    if(i)
    {
        if(i->info==x)
        {
            hash[x%MOD]=i->adr;
            free(i->adr);
        }
        else
        {
            while(i->adr && i->adr->info!=x)
                i=i->adr;
            if(i->adr)
            {
                c=i->adr;
                i=i->adr->adr;
                free(c);
            }
        }
    }
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("hashuri.in","r");
    fout=fopen("hashuri.out","w");
    int n,i,val,x;
    fscanf(fin,"%d",&n);
    for(i=0;i<n;i++)
    {
        fscanf(fin,"%d%d",&val,&x);
        switch(val)
        {
            case 1: add(x);break;
            case 2: sterg(x);break;
            case 3: fprintf(fout,"%d\n",caut(x));break;
        }
    }
    return 0;
}