Ciao. ho difficolta a creare un albero binario di ricerca con i puntatori a puntatori. Con il singolo puntatore ci sono riuscito. qualcuno saprebbe dirmi dove sbaglio in questo codice?
codice:
typedef struct nodo
{
int info;
struct nodo *sinistro;
struct nodo *destro;
}nod;
int vuoto(nod **rad)
{
if((*rad))/*rad == NULL*/
return 0;/*albero vuoto*/
else
return 1;/*albero non vuoto*/
}
void inserisci(nod **punt,int numero)
{
if (vuoto(punt))/*se punt==NULL*/
{
punt=(nod**)malloc(sizeof(nod));/*inserimento valore*/
(*punt)->info=numero;
(*punt)->sinistro=NULL;
(*punt)->destro=NULL;
}
else
{
if (numero>(*punt)->info)/*scorriamo a destra*/
inserisci(&(*punt)->destro,numero);
else /*scorriamo a sinistra*/
inserisci(&(*punt)->sinistro,numero);
}
}
nod **crea_albero()
{
int val;
nod **p;
*p=NULL;
do
{
printf("INSERIRE VALORE : \n");
scanf("%d", &val);
if (val!=0) /*possiamo inserire il valore*/
inserisci(p,val);
}
while (val!=0);
return p;
}
int main()
{
nod **rad;
printf("creazione ALBERO \n");
rad=crea_albero();
}
il programma appena lo lancio va subito in loop.