Reto 3
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.
Solución
Seudocódigo
clase Nodo:
función iniciar(dato)
self.dato = dato
self.siguiente = nulo
self.anterior = nulo
clase ListaDoble:
función iniciar()
self.primero = nulo
función agregar(dato)
nuevo_nodo = Nodo(dato)
si self.primero es nulo entonces
self.primero = nuevo_nodo
sino
nodo_actual = self.primero
mientras nodo_actual.siguiente no sea nulo hacer
nodo_actual = nodo_actual.siguiente
fin mientras
nodo_actual.siguiente = nuevo_nodo
nuevo_nodo.anterior = nodo_actual
fin si
función borrar(dato)
si self.primero es nulo entonces
retornar
fin si
si self.primero.dato es igual a dato entonces
self.primero = self.primero.siguiente
si self.primero no es nulo entonces
self.primero.anterior = nulo
fin si
retornar
fin si
nodo_actual = self.primero
mientras nodo_actual.siguiente no sea nulo hacer
si nodo_actual.siguiente.dato es igual a dato entonces
nodo_actual.siguiente = nodo_actual.siguiente.siguiente
si nodo_actual.siguiente no es nulo entonces
nodo_actual.siguiente.anterior = nodo_actual
fin si
retornar
fin si
nodo_actual = nodo_actual.siguiente
fin mientras
fin función
fin clase
Mientras nodo_actual no sea nulo:
imprimir nodo_actual.dato
nodo_actual = nodo_actual.siguiente
Finmientras
