Salve a tutti,
ho scritto il seguente semplice programma per la creazione di un albero tramite puntatori:
In fase di compilazione non ottengo nessun errore; ma in fase di esecuzione, dopo aver generato il nodo radice, il programma non attende la chiamata di input per sapere se voglio o meno inserire dei figli per il relativo nodo: praticamente ignora la chiamata scanf("%c", &command); e ciò che segue.codice:#include <stdio.h> #include <stdlib.h> struct nodo { int info; struct nodo *left; struct nodo *right; }; struct nodo *r; struct nodo *inserimento(struct nodo *, char, int); int main () { r = inserimento(r, 'X', 0); return 0; } struct nodo *inserimento(struct nodo *p, char pos_figlio, int padre){ char command; if (pos_figlio == 'X') { p = (struct nodo *) malloc(sizeof(struct nodo)); printf("Inserisci valore radice: "); scanf("%d", &p->info); p->left = NULL; p->right = NULL; p->left = inserimento(p->left, 'S', p->info); p->right = inserimento(p->right, 'D', p->info); } else { printf("Vuoi inserire il figlio %c di %d? ", pos_figlio, padre); scanf("%c", &command); if (command == 's'){ p = (struct nodo *) malloc(sizeof(struct nodo)); printf("Inserisci valore del figlio %c di %d: ", pos_figlio, padre); scanf("%d", &p->info); p->left = NULL; p->right = NULL; p->left = inserimento(p->left, 'S', p->info); p->right = inserimento(p->right, 'D', p->info); } } return(p); }
Potreste aiutarmi?
Grazie mille in anticipo.

Rispondi quotando