listas enlazadas y objetos

edu
19 de Diciembre del 2005
Me gustaría recorrer una lista enlazada y borrar sus elementos. Tengo esto para meter los elementos:
ListaEnlazada nuevo;
nuevo = new ListaEnlazada();
nuevo.valor=x;
nuevo.siguiente = this.siguiente;
this.siguiente = nuevo;
y ahora quiero empezar desde el principio y borrar los elementos, pero no se posicionarme en el primer elemento. Ayuda!
Gracias.

Diego
19 de Diciembre del 2005
supongo que tendrás una clase Nodo con al menos:

public class Nodo{
...
Nodo siguiente;
}

Donde siguiente apunta al siguiente elemento de la lista(y si no hay es null) y una clase lista con al menos:

public class Lista{
...
Nodo primero;
}

Donde primero apunta al primer elemento de la listapues bien, para eliminar todos los elementos en la clase lista inserta el siguiente método:

public void vaciar(){
Nodo actual=primero;
Nodo anterior=null;
while(actual!=null) //Mientras queden elementos...
{
anterior=actual; //Marca al actual
actual=actual.siguiente; //avanza el actual
anterior.siguente=null; //borra la referencia
}
if(anterior!=null) //Si el primero es null de no poner este if daría error pero
anterior.siguiente=null; //si no hacemos esto, dejamos al último elemento referenciado
primero=null; //con el penúltimo. Finalmente quitamos la referencia al
} //primero

De este modo, si no existen más referencias a los nodos estos se quedan sin referencias y será recogidos por el recolector de basura. También se puede hacer primero=null, pero entonces tendrás que esperar a cada recolección de basura para que cada nodo se quede sin referencias, a no ser que en memoria esté en el orden en el que han sido creados, pero no se pueden hacer suposiciones al respecto.

pedrohv012005
19 de Diciembre del 2005
Podrias ser mas claro?? No entiendo la parte del codigo

neossoftware
19 de Diciembre del 2005
Si ademas de que esta infringiendo con el encapsulameniento de OO al accesar a los atributos.

Podrias colocar más codigo????