#include <stdio.h>
#include <stdlib.h>
struct nodoLista {
int info;
struct nodoLista *next;
};
typedef struct nodoLista NodoLista;
typedef NodoLista *TipoLista;
void StampaLista(TipoLista lis)
{
while (lis != NULL) {
printf("%d ", lis->info);
lis = lis->next;
}
}
void StampaListaRicorsiva(TipoLista lis)
{
if (lis != NULL) {
printf("%d ", lis->info);
StampaListaRicorsiva(lis->next);
}
}
void StampaListaInvertita(TipoLista lis)
{
if (lis != NULL) {
StampaListaInvertita(lis->next);
printf("%d ", lis->info);
}
}
int main (void)
{
int a, b, c;
TipoLista lis1, lis2;
TipoLista aux;
printf("Inserisci tre interi: ");
scanf("%d%d%d", &a, &b, &c);
lis1 = malloc(sizeof(NodoLista));
lis1->info = a;
lis1->next = malloc(sizeof(NodoLista));
lis1->next->info = b;
lis1->next->next = malloc(sizeof(NodoLista));;
lis1->next->next->info = c;
lis1->next->next->next = NULL;
lis2 = NULL;
aux = malloc(sizeof(NodoLista));
aux->info = c;
aux->next = lis2;
lis2 = aux;
aux = malloc(sizeof(NodoLista));
aux->info = b;
aux->next = lis2;
lis2 = aux;
aux = malloc(sizeof(NodoLista));
aux->info = a;
aux->next = lis2;
lis2 = aux;
printf("Ecco i numeri che hai scritto\n");
StampaLista(lis1);
putchar('\n');
printf("Ecco i numeri che hai scritto (stampa ricorsiva)\n");
StampaListaRicorsiva(lis2);
putchar('\n');
printf("Ecco i numeri che hai scritto (in ordine inverso)\n");
StampaListaInvertita(lis1);
putchar('\n');
return 0;
}