/* Data la lista ed un intero n restituire la sottolista senza i primi n elementi. Si ricorda che: struct _nodo { int dato; struct _nodo *next; }; typedef struct _nodo *lista; typedef struct _nodo *puntatore; */ lista tail( lista l, int n ) { if( l == NULL ) return NULL; if( n == 0 ) return l; return tail( l->next, n-1 ); } /* Data una lista restituire una nuova lista con gli elementi rovesciati */ lista reverse( lista l, lista new ) { if( l == NULL ) return new; return reverse(l-next, cons(l-dato, new) ); } dove cons è una funzione che crea un nodo, inizializzandolo con i dati in ingresso puntatore cons( int dato, lista successivo ) { puntatore x = newNodo(); x->dato = dato; x->next = successivo; return x; }