Bienvenido a nuestra octava sesión, donde

Anuncio
Universidad Los Angeles de Chimbote
Sistema de Educación Virtual
Bienvenido a nuestra octava sesión, donde veremos cómo
se eliminar nodos en las listas enlazadas y cómo son los
programas de implementación correspondientes en Java.
Comenzamos.
Curso : Estructuras de datos
Docente: Ing. Héctor Fiestas Bancayán 1
Universidad Los Angeles de Chimbote
Sistema de Educación Virtual
Listas enlazadas en Java (1)
Borrado de nodos
Otro algoritmo común de las listas de enlace simples es el borrado
de nodos. Al contrario que la inserción de nodos, sólo hay dos
casos a considerar:
•
Borrar el Primer nodo:
Asigna el enlace del campo siguiente del nodo referenciado
por top a top:
•
•
•
top = top.siguiente;
// Referencia al segundo Nodo
//(o NULL si hay solamente un Nodo)
La siguiente imagen presenta las vistas anterior y posterior de una
lista donde se ha borrado el primer nodo. en esta figura, el nodo B
desaparece y el nodo A se convierte en el primer nodo.
Antes
Después
Curso : Estructuras de datos
Docente: Ing. Héctor Fiestas Bancayán 2
Universidad Los Angeles de Chimbote
•
•
•
•
•
Sistema de Educación Virtual
Borrar cualquier nodo que no sea el primero:
Localiza el nodo que precede al nodo a borrar y le asigna el
enlace que hay en el campo siguiente del nodo a borrar al
campo siguiente del nodo que le precede. El siguiente
pseudocódigo borra el nodo D:
temp = top
WHILE temp.nombre IS NOT "A"
temp = temp.siguiente
END WHILE
•
•
// Asumimos que temp referencia al Nodo A
•
•
temp.siguiente = temp.siguiente.siguiente
•
•
// Nodo D no longer exists
La siguiente figura presenta las vistas anterior y posterior de una
lista donde se ha borrado un nodo intermedio. En esa figura el nodo
D desaparece.
antes
después
Curso : Estructuras de datos
Docente: Ing. Héctor Fiestas Bancayán 3
Universidad Los Angeles de Chimbote
Sistema de Educación Virtual
El siguiente listado representa el equivalente Java a los
pseudocódigos de borrado anteriores:
// SLLDelDemo.java
class SLLDelDemo {
static class Nodo {
String nombre;
Nodo siguiente;
}
//
//
//
//
//
public static void main (String [] args) {
En las siguientes líneas se construye la lista
simplemente enlazada vista en la sesión anterior
(es decir:
B A D C)
Esto no forma propiamente parte del borrado de
nodos
Nodo top = new Nodo ();
top.nombre = "C";
top.siguiente = null;
Nodo temp = new Nodo ();
temp.nombre = "D";
temp.siguiente = top;
top = temp;
temp = new Nodo ();
temp.nombre = "A";
temp.siguiente = top;
top = temp;
temp = new Nodo ();
temp.nombre = "B";
temp.siguiente = top;
top = temp;
mostrar ("Lista enlazada inicial ", top);
// 1. Borrar el primer Nodo
top = top.siguiente;
Curso : Estructuras de datos
Docente: Ing. Héctor Fiestas Bancayán 4
Universidad Los Angeles de Chimbote
Sistema de Educación Virtual
mostrar ("Después de eliminar el primer
nodo", top);
// Regresar nuevamente B al comienzo
temp = new Nodo ();
temp.nombre = "B";
temp.siguiente = top;
top = temp;
// 2.Borrar cualquier Nodo menos el primero
//
En este ejemplo se borra el nodo que
//
contiene la letra D
temp = top;
while (temp.nombre.equals ("A") == false)
temp = temp.siguiente;
temp.siguiente = temp.siguiente.siguiente;
mostrar ("Después de eliminar el nodo D ",top);
}
static void mostrar(String msg, Nodo topNodo)
{
System.out.print (msg + "
");
while (topNodo != null) {
System.out.print (topNodo.nombre + " ");
topNodo = topNodo.siguiente;
}
System.out.println ();
}
}
Cuando ejecute SLLDelDemo, observará la siguiente salida:
Lista enlazada inicial
B A D C
Después de eliminar el primer nodo
Curso : Estructuras de datos
A D C
Docente: Ing. Héctor Fiestas Bancayán 5
Universidad Los Angeles de Chimbote
Sistema de Educación Virtual
Después de eliminar el nodo D
B A C
Esto es todo por ahora. Hemos visto como se borran nodos en las
listas enlazadas. Como tarea, debes realizar la tarea que te indico
en la sesión correspondiente.
Ten en cuenta que en la plataforma moodle le he puesto fecha
límite de entrega que debes respetar para no tener problemas al
subir tu archivo.
Buena suerte y hasta la siguiente sesión.
(1)
Basado en structuras de Datos y Algoritmos en Java
Autor: Jeff Friesen
Traductor: Juan Antonio Palos
(http://www.programacion.com/java/tutorial/jap_data_alg/4/)
Curso : Estructuras de datos
Docente: Ing. Héctor Fiestas Bancayán 6
Descargar