Buongiorno,
avrei bisogno che qualcuno mi chiarisse come gestire puntatori a strutture all'interno di altre strutture. Anche qualche chiarimento sulle strutture stesse è graditissimo.
Ho provato a costruire un albero con una struttura dati caratterizzata da un solo valore intero e funziona, appena provo a gestire una struttura non mi ci raccapezzo.
Questo è ciò che ho prodotto:
codice:
struct tpunto {
int valore;
};
typedef struct tpunto punto;
struct tnode {
punto *ppunto;
struct tnode *pleft;
struct tnode *pright;
};
typedef struct tnode nodo;
struct tnode *addtree (nodo *p, punto *w) {
if (p==NULL) {
p = (nodo *)malloc(sizeof(struct tnode));
p->ppunto = w;
p->pleft=p->pright=NULL;
} else if (p->ppunto->valore <= w->valore) {
p->pleft = addtree(p->pleft, w);
} else {
p->pright = addtree(p->pright,w);
}
return p;
}
void visita(nodo *p) {
if (p != NULL) {
printf("Valore = %d\n",p->ppunto->valore);
visita(p->pleft);
visita(p->pright);
}
}
int stampa_albero(nodo *p, char *nome_file) {
void stampa(nodo *p, int spacer, FILE *fileptr);
int spacer = 0;
FILE *file_ptr;
file_ptr = fopen(nome_file,"w");
if (file_ptr == NULL) {
return 0;
}
else {
if (p != NULL) {
stampa(p, spacer, file_ptr);
fclose(file_ptr);
}
}
return 1;
}
void stampa(nodo *p, int spacer, FILE *fileptr) {
int spacerL = spacer;
int spacerR = spacer;
int i = 0;
for (i; i < spacer; i++) {
fputs("\t",fileptr);
}
if (p != NULL) {
fprintf(fileptr,"Valore = %d \n",p->ppunto->valore);
stampa(p->pleft, ++spacerL, fileptr);
stampa(p->pright, ++spacerR, fileptr);
} else
fprintf(fileptr,"NODO - > NULL\n");
}
Grazie