ciao sono di nuovo qui con un piccolo problema:
stavolta mi occorre restituire una lista sempre invertita

utilizzando le classi di prima, ringrazio ancora andrea per il metodo inversione, faccio la cosa più semplice del mondo cioè creo una lista e pongo il suo header pari all'header.inversione(..,..) della classe lista, tutto dovrebbe andare invece mi ritrovo una lista vuota...
perchè? che sbaglio?

eccovi tutte le classi lista, nodo e la classe main usata per il test
codice:
public class Lista{
   private Nodo header;
   private int size;
   public Lista(){
       size=0;
   }
   public void add(Object o){
       if(size==0) header=new Nodo(o);
       else header=new Nodo(o,header);
       size++;
   }
   public void print(){
       if(size!=0) header.print();
       else System.out.println("Lista vuota");
   }
   public Lista invertiLista(){
       Lista nuova = new Lista();
       if(size!=0) nuova.header=header.inversione(null,header);
       return nuova;
   }
}
codice:
public class Nodo{
   Nodo next;
   Object elemento;
   public Nodo(Object elemento, Nodo next){
       this.elemento=elemento;
       this.next=next;
   }
   public Nodo(Object elemento){
       this.elemento=elemento;
       this.next=null;
   }
   public void print(){
       System.out.println(elemento);
       if(next!=null) next.print();
   }
   public Nodo inversione(Nodo prev, Nodo n){
       Nodo next_t = n.next;
       n.next = prev;
       return next_t != null ? inversione (n, next_t) : n;
   }
}
codice:
import java.io.*;

public class Main{

   public static void main(String[] args) throws IOException{
      Lista lista = new Lista();
      BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
      
      System.out.println("Quanti elementi vuoi inserire alla lista?");
      int a = Integer.parseInt(buffer.readLine());
      
      int i=0;
      while (i < a){
         System.out.print("Inserisci un elemento in testa alla lista: ");
         lista.add( Integer.parseInt(buffer.readLine()) );
         i++;
      }
      
      System.out.println("\nStampo la lista ottenuta...");
      lista.print();
      System.out.println("\nCreo una lista inversa...");
      Lista lista2 = lista.invertiLista();
      System.out.println("\nStampo la lista ottenuta...");
      lista2.print();
    }
}