Originariamente inviato da ViRUZ_gTi
codice:
   public Nodo inverti(Nodo attuale, Nodo precedente){
       //se arrivo all'ultimo nodo della lista
       if(attuale.next==null){
           if(precedente!=null) {
           //restituisco un nodo che punta al nodo precedente
           Nodo nuovo = new Nodo(attuale.elemento,precedente);
           //ricorsivamente fino a quando il nodo precedente non è nullo
           return nuovo.inverti(nuovo, attuale);
           }
           else return new Nodo(attuale.elemento);
       }
       //effettuo una ricorsione finchè non arrivo all'ultimo nodo
       else return next.inverti(attuale,precedente);    
   }
Troppo lungo ( io l'ho fatto con 3 righe di codice, senza alcun if e solo 1 operatore ternario ?: ).
Ma a parte la lunghezza, non vedo perché devi istanziare dei nuovi nodi. C'è solo da modificare il 'next' dei nodi e basta.