PDA

View Full Version : creare lista ricorsivamente in c


mame83
11-11-2010, 11:23
Salve ragazzi sono nuovo su questo forum. ho questo problema: devo creare una lista con una funzione ricorsiva, la funzione che ho creato mi resituisce sempre il puntatore della testa a null e non so perchè. Spero che qualcuno mi aiuti.:mc:


struct elemento*crea_lista(struct elemento*testa,struct elemento*app, int n)
{



if (n==0)
return testa;
else
{
if (testa==NULL)
{
printf("testa = NULL \n");
testa=(struct elemento*)malloc(sizeof(struct elemento));
testa->inf=3;
app=testa;
app->next=crea_lista(testa,app,n-1);
}
else
{
printf("testa diverso da null \n");
app=(struct elemento*)malloc(sizeof(struct elemento));
app->inf=4;
app->next=crea_lista(testa,app,n-1);
}
}
}

tuccio`
11-11-2010, 12:05
per forza, c'è un valore di ritorno diverso da NULL solo per l'ultima chiamata ricorsiva, il cui valore viene ritornato alla penultima chiamata ricorsiva, che però ritorna NULL perché n != 0.. e così via

mame83
11-11-2010, 15:32
scusa tu dici quindi di non richiamare la funzione collegandola ad app->next bensi di richiamarla tramite il semplice return???
cioè al posto di: app->next=crea_lista(testa,app->next,n-1) dovrei usare
return(crea_lista(testa,app->next,n-1))???