Está en la página 1de 6

Universidad Los Angeles de Chimbote

Universidad Los Angeles de Chimbote Sistema de Educación Virtual Bienvenido a nuestra octava sesión, donde veremos

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

Universidad Los Angeles de Chimbote Sistema de Educación Virtual Listas enlazadas en Java ( 1 )

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

desaparece y el nodo A se convierte en el primer nodo. Antes Después Curso : Estructuras
desaparece y el nodo A se convierte en el primer nodo. Antes Después Curso : Estructuras
desaparece y el nodo A se convierte en el primer nodo. Antes Después Curso : Estructuras

Después

Curso : Estructuras de datos

Docente: Ing. Héctor Fiestas Bancayán 2

Universidad Los Angeles de Chimbote

Universidad Los Angeles de Chimbote Sistema de Educación Virtual • • • • • • •

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
antes
después

Curso : Estructuras de datos

Docente: Ing. Héctor Fiestas Bancayán 3

Universidad Los Angeles de Chimbote

Universidad Los Angeles de Chimbote Sistema de Educación Virtual El siguiente listado representa el equivalente Java

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:

// Esto no forma propiamente parte del borrado de // nodos Nodo top = new Nodo ();

B A D C)

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

Universidad Los Angeles de Chimbote Sistema de Educación Virtual mostrar ("Después de eliminar el primer nodo",

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

Después de eliminar el primer nodo

B A

D C

A D C

Curso : Estructuras de datos

Docente: Ing. Héctor Fiestas Bancayán 5

Universidad Los Angeles de Chimbote

Universidad Los Angeles de Chimbote Sistema de Educación Virtual Después de eliminar el nodo D B

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