Pagini recente » Cod sursa (job #232850) | Cod sursa (job #846956) | Cod sursa (job #1191709) | Cod sursa (job #1027703) | Cod sursa (job #770318)
Cod sursa(job #770318)
#include<stdio.h>
#include<malloc.h>
#define MAXH 666013
typedef struct nod{
int param;
nod *leg;
}*LISTA;
LISTA adauga(LISTA prim, int param){
LISTA p;
if(prim == NULL){
prim = (LISTA)malloc(sizeof(nod));
prim->param = param;
prim->leg = NULL;
return prim;
}
p = (LISTA)malloc(sizeof(nod));
p->param = param;
p->leg = prim;
prim = p;
return prim;
}
LISTA stergere(LISTA prim, int param){
LISTA p;
if(prim == NULL) return NULL;
if(prim->param == param) {
p = prim->leg;
free(prim);
return p;
}
p = prim;
while(p->leg != NULL){
if(p->leg->param == param){
LISTA r = p->leg;
p->leg = p->leg->leg;
free(r);
return prim;
}
p = p->leg;
}
return prim;
}
int cautare(LISTA prim, int param){
LISTA p = prim;
while(p != NULL){
if(p->param == param)return 1;
p = p->leg;
}
return 0;
}
int main(){
LISTA *h = (LISTA*)malloc(MAXH * sizeof(LISTA));
int n, op, param, i;
FILE *f = fopen("hashuri.in", "r");
FILE *g = fopen("hashuri.out", "w");
for(i = 0; i < MAXH; i++)
h[i] = NULL;
fscanf(f, "%d", &n);
for(i = 0; i<n; i++){
fscanf(f, "%d%d", &op, ¶m);
if(op == 1){
int r = param % MAXH;
if(cautare(h[r], param) == 0)
h[r] = adauga(h[r], param);
}
if(op == 2){
int r = param % MAXH;
h[r] = stergere(h[r], param);
}
if(op == 3){
int r = param % MAXH;
fprintf(g, "%d\n", cautare(h[r], param));
}
}
fclose(f);
fclose(g);
}