ACTIVIDAD 5
Listas Doblemente Ligadas
1. Investigar el Algoritmo para borrar con listas doblemente ligadas
Entregables:
- Los algoritmos
- Prueba de Escritorio
- Diseñar un programa en uno de los lenguajes que manejen hasta el momento
Algoritmo y Prueba de Escritorio
Programa en Java
Clase Lista Doble
package ListasDobles;
public class ListaDoble {
private Nodo inicio;
private Nodo fin;
public ListaDoble() {
inicio = null;
fin = null;
}
public void insertarInicio(String dato) {
if (inicio == null) {
inicio = new Nodo(dato,null,null);
fin = inicio;
}else {
Nodo nuevo = new Nodo(dato,null,inicio);
inicio.setAnterior(nuevo);
inicio = nuevo;
}
}
public void insertarFin(String dato) {
if (inicio == null) {
fin = new Nodo(dato,null,null);
inicio = fin;
}else {
Nodo nuevo = new Nodo(dato,fin,null);
fin.setSiguiente(nuevo);
fin = nuevo;
}
}
public String EliminarInicio() {
String dato = inicio.getDato();
inicio = inicio.getSiguiente();
if (inicio != null) {
inicio.setAnterior(null);
}else {
fin = null;
}
return dato;
}
public String EliminarFinal() {
String dato = fin.getDato();
fin = fin.getAnterior();
if (fin != null) {
fin.setSiguiente(null);
}else {
fin = null;
}
return dato;
}
public void MostrarAdelante() {
Nodo temp = inicio;
while (temp != null) {
System.out.println(temp.getDato());
temp = temp.getSiguiente();
}
}
public void MostrarAtras() {
Nodo temp = fin;
while (temp != null) {
System.out.println(temp.getDato());
temp = temp.getAnterior();
}
}
}
Clase Nodo
package ListasDobles;
public class Nodo {
private Nodo siguiente;
private Nodo anterior;
private String dato;
public Nodo (String dat, Nodo ant, Nodo sig) {
siguiente = sig;
anterior = ant;
dato = dat;
}
public Nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;
}
public Nodo getAnterior() {
return anterior;
}
public void setAnterior(Nodo anterior) {
this.anterior = anterior;
}
public String getDato() {
return dato;
}
public void setDato(String dato) {
this.dato = dato;
}
}
Clase Principal
package ListasDobles;
public class Principal {
public static void main(String[] args) {
ListaDoble id = new ListaDoble();
id.insertarInicio("a");
id.insertarFin("b");
id.insertarFin("c");
id.MostrarAdelante();
System.out.println("====================");
System.out.println("Eliminando "+id.EliminarFinal());
id.MostrarAdelante();
System.out.println();
System.out.println("====================");
//System.out.println(id.EliminarFinal());
}
}
Referencias bibliográficas:
C, M., S, A., E, I., S, J., & A, E. (2012). Problemas Resueltos de Listas (Primera Edición, Vol. 1). UABCS. https://uabcs.mx/difusion2017/files/libros/pdf/193_20160910055537.pdf
Java ------- Elimine los nodos duplicados en la lista enlazada individualmente (siempre que esté en orden) - programador clic. (2020). programmerclick.com. https://programmerclick.com/article/97461417901/