Yo creo también que no es código Java ¿De qué libro y asignatura estamos hablando? Aquí te dejo un ejemplo simplificado de lista enlazada codificada en Java. Son pocas líneas de código pero entenderlas suele llevar un buen rato. Las claves están en que:
- La estructura de datos (la clase) es recursiva, contiene una referencia a un objeto del mismo tipo que define la clase.
(http://2.bp.blogspot.com/_eUgRNymlbIw/TOXRHmv_tRI/AAAAAAAAAQY/kYbb3EdmzVU/s1600/Sa1.jpg)
- Al añadir un elemento a la lista hace falta que first tome el valor u objeto a añadir y que la cola (tail) pase a ser lo que antes era la lista (para ello necesitamos crear una lista nueva que sea una copia de la lista existente antes de añadir el elemento)
- Tenemos que recorrer la lista recursivamente para mostrarla
Código de la clase (simplificación de lista enlazada):
public class listaEnlazadaEnteros<Integer> {
private Integer first;
private listaEnlazadaEnteros<Integer> tail;
//https://www.aprenderaprogramar.com/foros/index.php?topic=503.0
//Construye una lista enlazada vacía
listaEnlazadaEnteros() {
first = null;
tail = null;
}
public boolean isEmpty () {
if ( first==null && tail ==null ) {return true;} else {return false;}
}
public void addElement (Integer element) {
listaEnlazadaEnteros<Integer> siguiente = new listaEnlazadaEnteros<Integer>();
siguiente.first = first;
siguiente.tail = tail;
first = element;
tail = siguiente;
}
public String toString (listaEnlazadaEnteros<Integer> listaRecibida) {
if (listaRecibida.getFirst() == null && listaRecibida.getTail() == null) { return "fin";}
else if (listaRecibida.getFirst() != null && listaRecibida.getTail() == null) { return listaRecibida.getFirst().toString();}
else { return listaRecibida.getFirst().toString() + ", " + toString(listaRecibida.getTail());}
}
public Integer getFirst() { return first;}
public listaEnlazadaEnteros getTail() { return tail;}
}
Código test para hacer pruebas:
public class testListaEnlazada {
//https://www.aprenderaprogramar.com/foros/index.php?topic=503.0
public static void main (String [] Args) {
listaEnlazadaEnteros listaTest = new listaEnlazadaEnteros();
System.out.println ("Representación de la lista enlazada: "+ listaTest.toString(listaTest));
listaTest.addElement(Integer.valueOf(3));
System.out.println ("Representación de la lista enlazada: "+ listaTest.toString(listaTest));
listaTest.addElement(Integer.valueOf(-5));
System.out.println ("Representación de la lista enlazada: "+ listaTest.toString(listaTest));
listaTest.addElement(Integer.valueOf(64));
listaTest.addElement(Integer.valueOf(8));
System.out.println ("Representación de la lista enlazada: "+ listaTest.toString(listaTest));
}
}