Salve a tutti,
sto cercando di scrivere una funzione ricorsiva che prendendo un array come argomento mi restituisca una lista. il codice che segue è il meglio che ho potuto fare:
codice:
#include <stdio.h>
typedef struct lista
{
int num;
struct lista *suc;
} Ls;
Ls* creaListaDaArray(int array[])
{
Ls* testa;
if (array[0] == 0) return(NULL);
else {
testa=(Ls*)malloc(sizeof(Ls));
testa->num = array[0];
testa->suc = creaListaDaArray(array+1);
return(testa);
}
}
void stampaLista(Ls *testa)
{
if (testa == NULL)
{
printf("NULL");
return;
}
while (testa != NULL)
{
printf("%d ", testa->num);
testa = testa->suc;
}
}
main()
{
int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Ls *testa;
testa = creaListaDaArray(array);
stampaLista(testa);
}
Non riesco a capire dove sbaglio perché il programma mi stampa:
1 2 3 4 5 6 7 8 9 10 7209077 7733353 74 2 2293680 4198887 1 4143072 4139368 4210
688 2293668 -1 2293672 -2126502240 -1 4139368
Inoltre se un elemento del array fosse pari a 0 la funzione creaListaDaArray non funzionerebbe... Sarei molto grato se qualcuno mi desse una mano a risolvere il problema.