in modo iterativo mi funziona...se qualcuno è capace a farlo ricorsivo
codice:
#include <stdio.h>
#include <stdlib.h>
struct hello {
int n;
struct hello *next;
};
typedef struct hello hello;
/* Funzione che crea il primo elemento */
hello *crea(hello *p, int ins)
{
p = malloc(sizeof(hello));
p->n = ins;
p->next = NULL;
return p;
}
/* Crea elementi successivi */
hello *aggiungi(hello *p, int ins)
{
hello *paus, *prev, *curr;
paus = malloc(sizeof(paus));
paus->n = ins;
paus->next = NULL;
prev = NULL;
curr = p;
while(curr != NULL) {
prev = curr;
curr = curr->next;
}
prev->next = paus;
paus->next = curr;
return p;
}
/* Funzione ricorsiva che stampa la lista */
void stampa(hello *p)
{
if (p == NULL)
printf("NULL\n");
else {
printf("%d -> ", p->n);
stampa(p->next);
}
}
main()
{
hello *puntLista;
int ins;
printf("Inserisci il primo elemnto - 0 per finire\n");
scanf("%d", &ins);
puntLista = crea(puntLista, ins);
while (ins != 0) {
printf("Inserisci elemento successivo\n");
scanf("%d", &ins);
puntLista = aggiungi(puntLista, ins);
}
stampa(puntLista);
}