Salve a tutti,
ho scritto il seguente semplice programma per la creazione di un albero tramite puntatori:
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);
}
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.
Potreste aiutarmi?
Grazie mille in anticipo.