Tenendo il tuo design attuale:
a) Creando una lista temporanea (non necessariamente implementata direttamente, anche con una collezione di Java, se vuoi/puoi) che poi iteri o al contrario o creandola già al contrario man mano che iteri quella attuale.
b) Usando la ricorsione (meno preferibile se ci fossero migliaia di nodi) in cui prima entri in ricorsione e raggiungi il fondo, poi man mano che esci e ritorni indietro stampi gli utenti, che quindi risultano stampati al contrario di adesso.
Altrimenti cambi design: invece di avere una lista linkata singolarmente ne fai una doppiamente linkata. Il Nodo oltre ad avere utentePresentato avrebbe anche un es. utentePresentatore che punta nell'altro senso. E oltre a 'top' tieni anche un es. 'bottom'.
Per gestire e aggiornare questi dati aggiuntivi ovviamente ci vuole un pochino di logica in più ma a quel punto "navighi" nella lista avanti e indietro.
P.S. ho riletto la mia frase "Utente2 è stato presentato da Utente1 il quale non è stato presentato da nessuno" che descriveva lo schemino grafico che avevo fatto. In realtà l'ho descritto al contrario! Scusa, doveva essere "Utente2 ha presentato Utente1 il quale non ha presentato nessuno".
Che però risulta poco sensata tecnicamente, perché il primo inserito è Utente1 !!!
Quindi secondo me o cambi nome al campo o cambi il concetto.