facendo diversi test va in loop appena vede l istruzione *p=NULL.
ho provato a fare quest altra versione con void.
codice:
#include <stdio.h>
#include <malloc.h>
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);
}
}
void crea_albero(nod **p)
{
int val;
do
{
printf("INSERIRE VALORE : \n");
scanf("%d", &val);
if (val!=0) /*possiamo inserire il valore*/
inserisci(p,val);
}
while (val!=0);
}
int main()
{
nod **rad;
printf("creazione ALBERO \n");
*rad=NULL;
printf("chiamo la funzione \n");
crea_albero(rad);
}
mi va in loop subito dopo la printf("creazione albero \n");
spero mi aiutate