ayuda con lista doblmente enlazada.

tomeragain
24 de Octubre del 2008
quisiera saber cual es la verdadera utilidad de tener una lista doblemente enlazada,ya que me encargaron una en clase,anteriormente ya me habia armado mi lista simple,pero realmente no pude ese mismo codigo adecuarlo para que funcionara como lista doble,por eso en base a libros y ejemplos me tuve que armar un nuevo codigo el cual funcino,aunque solo me pedian en clase que imprimiera al revez...(no encuentro mucha utilidad en eso pero bueno)ya he entregado mi trabajo,pero me he quedado con la duda,y digo se deve poder adecuar el codigo que tengo para que funcione como lista doble, ahi les va a ver si me pueden ayudar:

public class Lista {

public class Nodo {
String informacion;
Nodo enlace;

Nodo(String informacion, Nodo enlace){
this.informacion = informacion;
this.enlace=enlace;
}
Nodo(String informacion){
this(informacion,null);
}

}//fin clase nodo**********************************************************

Nodo primerNodo;
Nodo ultimoNodo;
String nombre="lista";
String datoFre,datoFin;

public Lista(){
primerNodo=ultimoNodo=null;
}

public boolean estaVacia(){

return primerNodo==null;

}
public void insertarFrente( ){
if(estaVacia())
primerNodo=ultimoNodo=new Nodo(datoFre);
else

//primerNodo hace referencia a un nuevo nodo
primerNodo=new Nodo(datoFre,primerNodo);

print();
}

public void insertarFinal( ){
if(estaVacia())
primerNodo=ultimoNodo=new Nodo(datoFin);
else
//enlace hace referencian que va despues de de ultimoNodo
//hace referencia a un nuevo nodo.
ultimoNodo=ultimoNodo.enlace=new Nodo(datoFin);
print();
}

public void eliminarFrente()throws Exception {
if(estaVacia()){
JOptionPane.showMessageDialog(null,"La lista esta vacia","Lista simple"
,JOptionPane.INFORMATION_MESSAGE);
}
//actualizar las referencias primerNodo y ultimoNodo
if(primerNodo==ultimoNodo)
primerNodo=ultimoNodo=null;
else
primerNodo=primerNodo.enlace;

print();
}

public void eliminarFinal()throws Exception{
if(estaVacia()){
JOptionPane.showMessageDialog(null,"La lista esta vacia","Lista simple"
,JOptionPane.INFORMATION_MESSAGE);
}
//****
if(primerNodo==ultimoNodo)
primerNodo=ultimoNodo=null;
else{
//localizar nuevo ultimo nodo
Nodo actual=primerNodo;
//revisar mientras actual nno haga refrencias a ultimoNodo
while(actual.enlace!=ultimoNodo)
actual=actual.enlace;
ultimoNodo=actual;//actual es el nuevo ultimoNodo
actual.enlace=null;
}//
print();
}

public void print(){
if(estaVacia()){

System.out.println("la "+nombre +" esta"+ " vacia");
return;
}

System.out.print("la " + nombre + " es: " );
Nodo actual=primerNodo;

while(actual != null){
System.out.print
(" [ " + actual.informacion+ " ] "+ " ");
actual=actual.enlace;

}
System.out.println("\n");
}
}//fin clase

este es mi codigo de lista simple y me gustaria que me dijeran como acomodarlo para se comporte como lista doble, lo unico que en si tiene que hacer es imprimer al reves.
desde ya gracias.