Socorro: Dúvida para inserir no inicio de uma lista simples. encad. ordenada

[code]public void insere(int elemento){
Celula aux = new Celula(elemento, null);
Celula celula = primeiro.seguinte;

while(celula !=null && celula.seguinte != null && (celula.seguinte.elemento < aux.elemento)){//aqui é acondiçãod e parada, o while termina aqui e eu tenho q a celula aux.seguinte é a celula a ser inserida
		if(aux.elemento < celula.elemento){
			primeiro.seguinte = aux;
			System.out.println(primeiro.elemento);
	}
celula = celula.seguinte;
}
	

	if(celula.seguinte == null){ // celula.seguinte = aponta pra ultima celula e vê se é null.. se for é pq acabou
	ultimo.seguinte = aux;
	ultimo = ultimo.seguinte;}
	
//System.out.println(celula.elemento); = 3
//System.out.println(primeiro.elemento); = 0
//System.out.println(aux.elemento); = 1

	else{		
	aux.seguinte = celula.seguinte;  
  celula.seguinte = aux; 	
	}

}
[/code]

No meio dela… no fim… funcionam lindamente… mas no final n, já testei de várias maneiras e nd… :oops:

Aproveitando, estou pesquisando sobre a duplamente encadeada e vi que ela anda p/ frente e p/ trás.

Ok, mas n achei como fazer… então tenho uma pergunta:

Para eu andar com ela para tras, eu devo usar uma aux que vai uma posição anterior a q eu quero e depois aponto pra que eu quero?