Buonasera,

domani ho l'esame di informatica mi sono imbattuto nel seguente esercizio:

definire la classe Tavolo per istanziare tavoli le cui proprietà sono il materiale di cui sono fatti, lunghezza,larghezza e altezza. Definire dei metodi appropriati e un metodo toString per la descrizione testuale di un oggetto tavolo e un metodo equals che verifichi l'uguaglianza tra due tavoli.


Costruire l'oggetto Nodo per rappresentare liste di oggetti Tavolo.


Definire un metodo Nodo trasforma(Tavolo[] t) che, dato un array di tavoli, calcoli e restituisca una strutturacollegata di tavoli ordinati per lunghezza, e a parità di lunghezza per larghezza, e che non copi i tavoli uguali.

Io ho scritto il codice, il problema è che in uscita non stampa nulla:
codice:
class Nodo{
 Tavolo info;
 Nodo next;
 public Nodo(Tavolo s,Nodo l){
  this.info=s;
  this.next=l;
 }
}
public class esame2009{
 public static void main(String[] args){


  Tavolo[] t = new Tavolo[]{new Tavolo("legno",10,3,15),new Tavolo("cemento",12,5,20),new Tavolo("vetro",10,10,40),new Tavolo("legno",10,3,15)};
  Nodo v=trasforma(t);
  while(v!=null){
      System.out.println(v.info);
      v=v.next;
}
 }


public static void scambia(Tavolo[] a,int i, int j){
 Tavolo temp;
 temp=a[i];
 a[i]=a[j];
 a[j]=temp;
}
 public static Tavolo[] ordina(Tavolo[] t){


  int i;
  int j;
  int k;


  for(j=0;j<t.length-1;j++){
   for(i=1;i<t.length-j;i++){
    if(t[i].getLunghezza()<t[i-1].getLunghezza())
      scambia(t,i,i-1);
    else if(t[i].getLunghezza()==t[i-1].getLunghezza())
      if(t[i].getLarghezza()<t[i-1].getLarghezza())
        scambia(t,i,i-1);
    }
  }
  return t;
}
 public static Nodo trasforma(Tavolo[] t){


  Nodo l = new Nodo(t[0],null);
  Nodo app = l;
  int i;


  ordina(t);


  for(i=1;i<t.length;i++){
   app.next=new Nodo(t[i],null);
   app=app.next;
  }


 return eliminatutti(l);
 }


 public static Nodo eliminatutti(Nodo l){


  while(l!=null){
   eliminadoppioni(l.info,l);
   l=l.next;
  }
  return l;
 }


 public static void eliminadoppioni(Tavolo s,Nodo l){
  Nodo prec=l;
  Nodo succ=l.next;


  while(succ!=null){
   if(s.equals(l.info)){
    prec.next=succ.next;
    succ=prec.next;
   }
   else{
   succ=succ.next;
   prec=prec.next;
   }
  }
 }
}

codice:
public class Tavolo{
 public String materiale;
 public int altezza;
 public int lunghezza;
 public int larghezza;
 public Tavolo(String m,int a,int l,int w){
  this.materiale=m;
  this.altezza=a;
  this.lunghezza=l;
  this.larghezza=w;
 }
 public String getMateriale(){
  return this.materiale;
 }
 public int getAltezza(){
  return this.altezza;
 }
 public int getLunghezza(){
  return this.lunghezza;
 }
 public int getLarghezza(){
  return this.larghezza;
 }
 public String toString(){
  return "Tavolo di "+getMateriale()+"    larghezza,altezza,lunghezza:["+getAltezza()+"x"+getLunghezza()+"x"+getLarghezza()+"]";
 }
 public boolean equals(Tavolo q){
 return this.getMateriale().equals(q.getMateriale()) && this.getAltezza()==q.getAltezza() && this.getLunghezza()==q.getLunghezza() && this.getLarghezza()==q.getLarghezza();
 }
}
grazie in anticipo per la disponibilità!