Salve ragazzi, scrivo per avere un piccolo aiuto riguardo un esercizio di programmazione in C.
Sostanzialmente l'esercizio prevede la lettura di un file di testo e l'inserimento ordinato in un albero di ricerca. In tale file vi sono diversi parametri, del tipo nome, cognome e un intero. Devo inserire il tutto in un albero ordinato in base a giorno.
Ho pensato a questo codice
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define k 20
typedef struct{
char paziente[k];
char infermiera[k];
int giorno;
}element;
typedef struct item{
element value;
struct item *left,*right;
}nodo;
typedef nodo *tree;
int emptytree(){
return NULL;
}
int empty(tree t){
if(t==NULL) return 1;
else return 0;
}
element root(tree t){
return t->value;
}
tree left(tree t){
return t->left;
}
tree right(tree t){
return t->right;
}
tree cons_tree(element e,tree left,tree right){
tree aux;
aux=(tree)malloc(sizeof(nodo));
aux->value=e;
aux->left=left;
aux->right=right;
return aux;
}
tree insord_tree(element e,tree t){
if(empty(t))
return cons_tree(e,NULL,NULL);
else{
if(e.giorno<=root(t).giorno){
t->left=insord_tree(e,left(t));
return t;
}
else{
t->right=insord_tree(e,right(t));
return t;
}
}
}
tree carica_tree(FILE *f1,tree T){
element e;
while(!feof(f1)){
fscanf(f1,"%s%s%d",e.paziente,e.infermiera,&e.giorno);
T=insord_tree(e,T);
}
return T;
}
void stampa(tree t){
if(!empty(t)){
stampa(t->left);
printf("%s, \t%s, \t%d\n",root(t).paziente,root(t).infermiera,root(t).giorno);
stampa(t->right);
}
}
main(){
element e;
tree T=NULL;
FILE *f1;
f1=fopen("visite.txt","rt");
T=carica_tree(f1,T);
stampa(T);
fclose(f1);
}
Mentre in fase di compilazione ottengo alcuni warning, in esecuzione ottengo un "Errore Di Segmentazione"
Secondo voi, dove o cosa sbaglio?