Estructuras_de_Datos/src/cl/cromer/estructuras/code/listaEnlazadaCircular/eliminar

57 lines
1.2 KiB
Plaintext
Raw Normal View History

public void eliminar(int llave) {
2016-07-03 11:28:26 -04:00
if (primer != null) {
// Crear una lista temporario para trabajar
Enlace lista = this.primer;
// Guardar el enlace previo
Enlace previo = lista;
// Solo busca mientras que i es menor que la cantidad de enlaces
int i = 0;
while (lista.getLlave() != llave && i < elementos) {
// Buscar hasta la llave es encontraddo
if (lista.getSiguente() != null) {
// Buscar en el sigenute enlace
previo = lista;
lista = lista.getSiguente();
}
i++
}
2016-07-03 11:28:26 -04:00
if (lista.getLlave != llave) {
// No se encontró
return;
}
2016-07-03 11:28:26 -04:00
// Se encontró
if (lista == this.lista) {
// Si es el primer enlace, cambiarlo al siguente enlace
this.lista = this.lista.getSiguente();
}
else {
// Sino cortar este enlace de la lista
previo.setSiguente(lista.getSiguente());
}
elementos--;
}
}
final public class Enlace {
2016-07-03 11:28:26 -04:00
private int llave;
private Enlace siguente;
2016-07-03 11:28:26 -04:00
public Enlace(Enlace siguiente, int llave) {
this.siguente = siguente;
this.llave = llave;
}
2016-07-03 11:28:26 -04:00
public int getLlave() {
return llave;
}
2016-07-03 11:28:26 -04:00
public Enlace getSiguente() {
return siguente;
}
2016-07-03 11:28:26 -04:00
public void setSiguente(Enlace siguente) {
this.siguente = siguente;
}
}