1) Crea un metodo che dati 2 oggetti persona li compara secondo cognome/nome e restituisce 0, >0, <0. Ti sconsiglio di spezzare la cosa come hai fatto finora.
perdona la mi ignoranza, io creo un metodo in cui faccio cognome.compareTo(cognome2) e nello stesso metodo un'altra istruzione che fa' nome.compareTo(nome2), e alla fine quale restituisco?

2) Per cercare il nodo dietro cui inserire il nuovo nodo, allora innanzitutto devi gestire il caso "speciale" di inserimento prima della "testa".
Comunque tieni 2 variabili: il nodo "corrente" (inizialmente = alla testa) e un nodo "precedente" (inizialmente a null).
Cicla finché corrente è diverso da null. Compara la persona del nodo con la persona da aggiungere. Se quella del nodo è maggiore di quella da aggiungere, hai trovato il punto precedente, esci subito dal ciclo.
Altrimenti nel corpo del ciclo che prosegue: aggiorni il precedente con quello corrente e fai avanzare corrente.
Dopo il ciclo, crei il nuovo nodo e poi hai solo da gestire o il caso speciale (prima della testa) o il caso normale (dopo un nodo esistente, testa compresa).
con questo mi trovo perfettamente, e' quello che ho fatto io fin'ora
prima gestisco il caso in cui va' inserito in testa, poi ciclo fino a trovare la posizione se non si trova in testa finche' arriva in fondo e aggiungo alla fine.

solo se puoi delucidarmi un po' piu' in dettaglio riguardo la funzione che riceve 2 oggetti persona e li compara per favore
grazie dell'aiuto comunque!!
angelo