Originariamente inviato da Cavaz94
codice:
public class Oggetto{
    private int val;
    private Oggetto o;
    public Oggetto(){
        val=Integer.parseInt(JOptionPane.showInputDialog("Inserire un numero"));
        o=null;
    }
    public void setProssimo(Oggetto p){
        o=p;
    }
    public int getVal(){
        return val;
    }
    public Oggetto getO(){
        return o;
    }
}
Tecnicamente corretto. A parte il fatto che non è molto bello chiedere l'input del numero con un JOptionPane messo lì dentro nel costruttore di questa classe che comunque modella solo un "nodo con valore" e non ha nulla a che fare (concettualmente) con un interfacciamento verso l'utente.

Ma tralasciamo pure questo dettaglio, se è un "esercizio" o poco più, si può chiudere un occhio.

Originariamente inviato da Cavaz94
codice:
    public void aggiungiInTesta(Oggetto t){
        if(a != null){
            t.setProssimo(a);
        }
        a=t;
    }
Se ci ragioni, quel if è del tutto inutile.

Originariamente inviato da Cavaz94
codice:
    public void visualizza(){
        Oggetto h=a;
        boolean b;
        do{
            b=true;
            System.out.println(h.getVal());
            h=h.getO();
            if(h==null){
                b=false;
            }
        }
        while(b==true);
    }
Qui c'è altra roba inutile. Quel boolean non serve. Il ciclo basterebbe che sia: "finché h è diverso da null", allora: stampa valore e metti in h il prossimo.
Stop.

Originariamente inviato da Cavaz94
codice:
    public void aggiungiInCoda(Oggetto d){
       ?????????????
    }
}
Con una logica di ciclo similare a visualizza (quanto ho detto io) si può fare il aggiungiInCoda.
Basta arrivare ad avere l'ultimo oggetto, dopodiché il nuovo 'd' diventa il prossimo 'o' nell'ultimo nodo che esisteva.

Tutto qui.