Cod sursa(job #1534056)

Utilizator Balescu_OvidiuBalescu Ovidiu-Gheorghe Balescu_Ovidiu Data 23 noiembrie 2015 11:16:09
Problema Hashuri Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.5 kb
#include <stdio.h>
#include <stdlib.h>

struct node{
    unsigned long value;
    node *urm;
}*START,*END;

void DELETE(node *&START,node *&END,unsigned long value){
    node *x,*C;
    if(START->value==value){
        x=START;
        START=START->urm;
    }
    else{
        C=START;
        while(C->urm&&C->urm->value!=value)
            C=C->urm;
        if(C->urm!=NULL){
            x=C->urm;
            C->urm=x->urm;
        }
    }
}
bool SEARCH(node *START,unsigned long value){
    while(START){
        if(START->value==value)
            return 1;
        START=START->urm;
    }
    return 0;
}
void ADD(node *&START,node *&END,unsigned long value){
    if(!SEARCH(START,value)){
        if(START){
            END->urm=(node*)malloc(sizeof(node));
            END=END->urm;
            END->value=value;
            END->urm=NULL;
        }else{
            START=NULL;
            START=(node*)malloc(sizeof(node));
            START->value=value;
            START->urm=NULL;
            END=START;
        }
    }
}
int main(){
    unsigned long n,x; unsigned op;
    FILE*f=fopen("hashuri.in","r");
    FILE*g=fopen("hashuri.out","w");
    fscanf(f,"%lu",&n);
    while(n--){
        fscanf(f,"%u %lu",&op,&x);
        switch(op){
            case 1: ADD(START,END,x); break;
            case 2: DELETE(START,END,x); break;
            case 3: fprintf(g,"%u\n",SEARCH(START,x)); break;
        }
    }
    fclose(f);
    fclose(g);
    return 0;
}