PDA

View Full Version : [C] creare albero binario di ricerca con doppio puntatore


mame83
18-01-2011, 11:21
Salve a tutt. ho il seguente problema non riesco a creare un albero binario di ricerca con i puntatori a puntatori. con il singolo puntatore ci sono riuscito.


#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);
}

}
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 seguento codice mi va in loop appena lo lancio. Sono in grosso difficolta qualcuno saprebbe aiutarmi???