Unidad III Listas Enlazadas

Post on 24-Jul-2015

723 views 2 download

Transcript of Unidad III Listas Enlazadas

UNIDAD VUNIDAD V

• Listas enlazadas.Listas enlazadas.

CONTENIDOCONTENIDO

• Objetivos específicos.Objetivos específicos.• Bibliografía recomendada.Bibliografía recomendada.• Introducción.Introducción.• Listas enlazadas. Concepto.Listas enlazadas. Concepto.• Estructura de un nodo.Estructura de un nodo.• Clasificación de las listas.Clasificación de las listas.• Ventajas.Ventajas.

CONTENIDOCONTENIDO

• Operaciones sobre las listas.Operaciones sobre las listas.• Operaciones sobre las listas simplemente Operaciones sobre las listas simplemente

enlazadas lineales.enlazadas lineales.• Operaciones sobre las listas simplemente Operaciones sobre las listas simplemente

enlazadas circulares.enlazadas circulares.• Operaciones sobre las listas doblemente Operaciones sobre las listas doblemente

enlazadas lineales.enlazadas lineales.

CONTENIDOCONTENIDO

• Operaciones sobre las listas doblemente enlazadas Operaciones sobre las listas doblemente enlazadas circulares.circulares.

• Aplicaciones.Aplicaciones.

OBJETIVOS ESPECIFICOSOBJETIVOS ESPECIFICOS

BIBLIOGRAFIA BIBLIOGRAFIA RECOMENDADARECOMENDADA

• Cairó Osvaldo & Guardati Silvia. Cairó Osvaldo & Guardati Silvia. Estructuras de Estructuras de datosdatos. 2001. Editorial Mc Graw Hill. Pp 139-167.. 2001. Editorial Mc Graw Hill. Pp 139-167.

• Aguilar Joyanes. Aguilar Joyanes. Programación en C++. Programación en C++. 2000. 2000. Editorial Mc Graw Hill. Pp 369-380.Editorial Mc Graw Hill. Pp 369-380.

• Zimerman Heilleman. Estructuras de datos. . Zimerman Heilleman. Estructuras de datos. . Editorial Mc Graw Hill. Pp 83-104.Editorial Mc Graw Hill. Pp 83-104.

BIBLIOGRAFIA BIBLIOGRAFIA RECOMENDADARECOMENDADA

• Aguilar Joyanes & Zahonero Ignacio. Aguilar Joyanes & Zahonero Ignacio. Programación en C. Libro de Problemas. 2002. Programación en C. Libro de Problemas. 2002. Editorial Mc Graw Hill. Pp 257-292. Editorial Mc Graw Hill. Pp 257-292.

• Aguilar Joyanes & Zahonero Ignacio. Estructuras Aguilar Joyanes & Zahonero Ignacio. Estructuras de datos. Libro de Problemas. 1999. Editorial Mc de datos. Libro de Problemas. 1999. Editorial Mc Graw Hill. 87-127.Graw Hill. 87-127.

BIBLIOGRAFIA BIBLIOGRAFIA RECOMENDADARECOMENDADA

• Villalobo Jorge. Diseño y manejo de estructuras Villalobo Jorge. Diseño y manejo de estructuras de datos en C. 1996. Editorial Mc Graw Hill. Pp de datos en C. 1996. Editorial Mc Graw Hill. Pp 85-119.85-119.

• Susan Nell. Estructuras de datos. 1994. Editorial Susan Nell. Estructuras de datos. 1994. Editorial Mc Graw Hill. 229-355Mc Graw Hill. 229-355

INTRODUCCIÓNINTRODUCCIÓN

• Las estructuras de datos presentadas hasta el Las estructuras de datos presentadas hasta el momento (estructuras, pilas y colas) se denominan momento (estructuras, pilas y colas) se denominan estáticas. Reciben este este nombre debido a que estáticas. Reciben este este nombre debido a que durante la compilación se les asigna espacio de durante la compilación se les asigna espacio de memoria, y éste permanece inalterable a lo largo memoria, y éste permanece inalterable a lo largo de la ejecución del programa, es decir, las de la ejecución del programa, es decir, las variables no pueden crearse ni destruirse durante la variables no pueden crearse ni destruirse durante la ejecución del programa. ejecución del programa.

INTRODUCCIÓNINTRODUCCIÓN

• En esta unidad se introduce un nuevo concepto, el En esta unidad se introduce un nuevo concepto, el de estructuras dinámicas de datos. Este tipo de de estructuras dinámicas de datos. Este tipo de estructura es generado a partir de un tipo de dato estructura es generado a partir de un tipo de dato conocido con el nombre de puntero.conocido con el nombre de puntero.

• La principal ventaja de manejar este tipo de dato es La principal ventaja de manejar este tipo de dato es que se puede adquirir posiciones de memoria a que se puede adquirir posiciones de memoria a medida que se necesitan, y liberarlas cuando ya no medida que se necesitan, y liberarlas cuando ya no se requieren. De esta manera es posible crear se requieren. De esta manera es posible crear estructuras dinámicas que se expandan o contraigan, estructuras dinámicas que se expandan o contraigan, según se les agreguen o eliminen elementos.según se les agreguen o eliminen elementos.

LISTAS ENLAZADASLISTAS ENLAZADAS

• Es una colección de elementos llamados Es una colección de elementos llamados generalmente nodos. generalmente nodos.

ESTRUCTURA DE UN ESTRUCTURA DE UN NODONODO

• Información. Información. • Siguiente.Siguiente.

ESTRUCTURA DE UN ESTRUCTURA DE UN NODONODO

• La fig 5.1 representa un ejemplo de una lista que La fig 5.1 representa un ejemplo de una lista que almacena apellidos.almacena apellidos.

P

García Pérez López Santos

NULL

CLASIFICACIÓN DE LAS CLASIFICACIÓN DE LAS LISTASLISTAS

• Listas simplemente enlazadas.Listas simplemente enlazadas.– Lineales.Lineales.– Circulares.Circulares.

• Listas doblemente enlazadas.Listas doblemente enlazadas.– Lineales.Lineales.– Circulares.Circulares.

VENTAJASVENTAJAS

• Uso eficiente de recurso memoria.Uso eficiente de recurso memoria.• No requiere reordenamiento o desplazamiento de No requiere reordenamiento o desplazamiento de

dato.dato.

OPERACIONES SOBRE LAS OPERACIONES SOBRE LAS LISTASLISTAS

• Inserción.Inserción.• Eliminación.Eliminación.• Búsqueda.Búsqueda.• Recorrido e impresión.Recorrido e impresión.

LISTAS SIMPLEMENTE LISTAS SIMPLEMENTE ENLAZADAS LINEALESENLAZADAS LINEALES

INSERCIÓN DE UN INSERCIÓN DE UN ELEMENTO ELEMENTO

• Al inicio de la lista.Al inicio de la lista.• Al final de la lista.Al final de la lista.• Antes/después que otro.Antes/después que otro.

INSERTAR AL INICIO DE INSERTAR AL INICIO DE UNA LISTAUNA LISTA

INSERTAR AL FINAL DE INSERTAR AL FINAL DE UNA LISTAUNA LISTA

INSERTAR UN NODO INSERTAR UN NODO ANTES QUE OTROANTES QUE OTRO

INSERTAR UN NODO INSERTAR UN NODO DESPUÉS QUE OTRODESPUÉS QUE OTRO

ELIMINACIÓN DE UN ELIMINACIÓN DE UN ELEMENTOELEMENTO

• Al inicio de la lista.Al inicio de la lista.• Al final de la lista.Al final de la lista.• Antes/Después de un nodo dado como referencia.Antes/Después de un nodo dado como referencia.• Nodo con información.Nodo con información.

ELIMINAR EL PRIMER ELIMINAR EL PRIMER NODO DE UNA LISTANODO DE UNA LISTA

ELIMINAR EL ÚLTIMO NODO ELIMINAR EL ÚLTIMO NODO DE LA LISTADE LA LISTA

ELIMINAR UN NODO CON ELIMINAR UN NODO CON INFORMACIÓNINFORMACIÓN

ELIMINAR EL NODO ELIMINAR EL NODO ANTERIOR AL NODO CON ANTERIOR AL NODO CON

INFORMACIÓN XINFORMACIÓN X

BÚSQUEDABÚSQUEDA

• En una lista ordenada.En una lista ordenada.• En una lista desordenada.En una lista desordenada.

BUSQUEDA DE UN ELEMENTO BUSQUEDA DE UN ELEMENTO EN UNA LISTA EN UNA LISTA

DESORDENADADESORDENADA

BUSQUEDA DE UN BUSQUEDA DE UN ELEMENTO EN UNA LISTA ELEMENTO EN UNA LISTA

ORDENADAORDENADA

LISTAS SIMPLEMENTE LISTAS SIMPLEMENTE ENLAZADAS CIRCULARESENLAZADAS CIRCULARES

• Las listas circulares tienen la característica de que Las listas circulares tienen la característica de que el último elemento de la misma apunta al primero.el último elemento de la misma apunta al primero.

García

P

Pérez López Santos

INSERTAR AL INICIOINSERTAR AL INICIO

INSERTAR AL FINALINSERTAR AL FINAL

INSERTAR ANTES DE UN INSERTAR ANTES DE UN NODO DADONODO DADO

INSERTAR DESPUÉS DE INSERTAR DESPUÉS DE UN NODO DADOUN NODO DADO

ELIMINAR EL PRIMER ELIMINAR EL PRIMER NODONODO

ELIMINAR EL ÚLTIMO ELIMINAR EL ÚLTIMO NODONODO

ELIMINAR UN NODO CON ELIMINAR UN NODO CON INFORMACIÓNINFORMACIÓN

ELIMINAR UN NODO ELIMINAR UN NODO ANTES DE UN NODO DADOANTES DE UN NODO DADO

ELIMINAR UN NODO ELIMINAR UN NODO DESPUÉS DE UN NODO DESPUÉS DE UN NODO

DADODADO

LISTAS DOBLEMENTE LISTAS DOBLEMENTE ENLAZADASENLAZADAS

• Una lista doblemente enlazada es una colección Una lista doblemente enlazada es una colección de nodos, en la cual cada nodo tiene dos de nodos, en la cual cada nodo tiene dos punteros. Uno de ello apuntando a su predecesor punteros. Uno de ello apuntando a su predecesor (Izq) y el otro a su sucesor (Der). (Izq) y el otro a su sucesor (Der).

GarcíaGarcía PérezPérez LópezLópez SantosSantos

NILNIL NILNIL

PP FF

OPERACIONES CON LISTAS OPERACIONES CON LISTAS DOBLEMENTE ENLAZADADOBLEMENTE ENLAZADA

• Inserción de un elementoInserción de un elemento• Eliminación de un elemento.Eliminación de un elemento.• Recorrido e impresión en listas.Recorrido e impresión en listas.

RECORRIDO E IMPRESIÓN RECORRIDO E IMPRESIÓN DE LA LISTADE LA LISTA

• Al tener doble enlace, la lista puede recorrerse Al tener doble enlace, la lista puede recorrerse tanto de inicio al final (tomando el enlace del tanto de inicio al final (tomando el enlace del puntero Der), como en sentido inverso (tomando el puntero Der), como en sentido inverso (tomando el enlace izquierdo).enlace izquierdo).

RECORRIDO E IMPRESIÓN RECORRIDO E IMPRESIÓN DE LA LISTADE LA LISTA

INSERCIÓN DE UN INSERCIÓN DE UN ELEMENTOELEMENTO

• Al inicio de la lista.Al inicio de la lista.• Al final de la lista.Al final de la lista.• Antes/después de un nodo dado como referencia Antes/después de un nodo dado como referencia

INSERTAR AL INICIO DE LA INSERTAR AL INICIO DE LA LISTALISTA

INSERTAR AL FINAL DE LA INSERTAR AL FINAL DE LA LISTALISTA

INSERTAR UN NODO INSERTAR UN NODO ANTES QUE OTRO DADO ANTES QUE OTRO DADO

COMO REFERENCIACOMO REFERENCIA

INSERTAR UN NODO INSERTAR UN NODO DESPUÉS QUE OTRO DADO DESPUÉS QUE OTRO DADO

COMO REFERENCIACOMO REFERENCIA

ELIMINACIÓN DE UN ELIMINACIÓN DE UN ELEMENTOELEMENTO

• Al inicio de la lista.Al inicio de la lista.• Al final de la lista.Al final de la lista.• Antes/después de un nodo dado como referencia.Antes/después de un nodo dado como referencia.• Un nodo con información.Un nodo con información.

ELIMINA EL PRIMER NODO ELIMINA EL PRIMER NODO DE LA LISTADE LA LISTA

• ELIMINAPRIMER(P,F)ELIMINAPRIMER(P,F) {Este algoritmo elimina el primer elemento de una {Este algoritmo elimina el primer elemento de una

lista. P y F son los apuntadores al primer y último lista. P y F son los apuntadores al primer y último nodo de la lista respectivamente}nodo de la lista respectivamente}

{Q es una variable de tipo puntero}{Q es una variable de tipo puntero} 1. Hacer Q1. Hacer QPP 2. Si Q^.Der2. Si Q^.DerNIL entoncesNIL entonces {Verifica si la lista tiene un sólo elemento}{Verifica si la lista tiene un sólo elemento} Hacer P Hacer P Q^.Der y P^.IZQ Q^.Der y P^.IZQ NILNIL

ELIMINA EL PRIMER NODO ELIMINA EL PRIMER NODO DE LA LISTADE LA LISTA

Si noSi no

Hacer P Hacer P NIL y F NIL y F NILNIL

3. Fin del condicional del paso 23. Fin del condicional del paso 2

4. Quitar(Q)4. Quitar(Q)

ELIMINA EL ÚLTIMO ELIMINA EL ÚLTIMO NODO DE LA LISTANODO DE LA LISTA

• ELIMINAÚLTIMO(P,F)ELIMINAÚLTIMO(P,F) {Este algoritmo elimina el último elemento de una {Este algoritmo elimina el último elemento de una

lista. P y F son los apuntadores al primer y último nodo lista. P y F son los apuntadores al primer y último nodo de la lista respectivamente}de la lista respectivamente}

{Q es una variable de tipo puntero}{Q es una variable de tipo puntero}

1. Hacer Q 1. Hacer Q FF

2. Si Q^.IZQ2. Si Q^.IZQNIL entonces NIL entonces {Verifica si la lista tiene un solo elemento}{Verifica si la lista tiene un solo elemento}

Hacer F Hacer F Q^.IZQ y F^.DER Q^.IZQ y F^.DER NILNIL

ELIMINA EL ÚLTIMO ELIMINA EL ÚLTIMO NODO DE LA LISTANODO DE LA LISTA

Si noSi no

Hacer F Hacer F NIL y P NIL y P NILNIL

3. Fin del condicional del paso 23. Fin del condicional del paso 2

4. Quitar(Q)4. Quitar(Q)

ELIMINA UN NODO CON ELIMINA UN NODO CON INFORMACIÓN XINFORMACIÓN X

• ELIMINAX(P,F,X)ELIMINAX(P,F,X) {Este algoritmo elimina el nodo con información X. {Este algoritmo elimina el nodo con información X.

P y F son los apuntadores al primer y último nodo P y F son los apuntadores al primer y último nodo de la lista respectivamente}de la lista respectivamente}

{Q, T y R son variables de tipo puntero }{Q, T y R son variables de tipo puntero }

1. Hacer Q 1. Hacer Q PP

2. Repetir mientras Q^.DER 2. Repetir mientras Q^.DER NIL y Q^.Info NIL y Q^.Info XX

Hacer Q Hacer Q Q^.DERQ^.DER

3. Fin del ciclo del paso 23. Fin del ciclo del paso 2

ELIMINA UN NODO CON ELIMINA UN NODO CON INFORMACIÓN XINFORMACIÓN X

4. Si Q^.Info=X entonces4. Si Q^.Info=X entonces

4.1. Si Q=P y Q=F entonces4.1. Si Q=P y Q=F entonces

{La lista tiene un sólo nodo}{La lista tiene un sólo nodo}

Hacer P Hacer P NIL y F NIL y F NILNIL

Si noSi no

4.1.1. Si Q=P entonces4.1.1. Si Q=P entonces

{Es el primero}{Es el primero}

Hacer P Hacer P Q^.DER y P^.IZQ Q^.DER y P^.IZQ NILNIL

ELIMINA UN NODO CON ELIMINA UN NODO CON INFORMACIÓN XINFORMACIÓN X

Si noSi no

4.1.1.1. Si Q=F entonces4.1.1.1. Si Q=F entonces

{Es el último}{Es el último}

Hacer F Hacer F Q^.IZQ y P^.DER Q^.IZQ y P^.DER NILNIL

Si noSi no

Hacer T Hacer T Q^.IZQ y R Q^.IZQ y R Q^.DER,Q^.DER,

T^.DER T^.DER R y R^.IZQ R y R^.IZQ TT

ELIMINA UN NODO CON ELIMINA UN NODO CON INFORMACIÓN XINFORMACIÓN X

4.1.1.2. Fin del condicional del paso 4.1.1.14.1.1.2. Fin del condicional del paso 4.1.1.1

4.1.2. Fin del condicional del paso 4.1.14.1.2. Fin del condicional del paso 4.1.1

4.2. Fin del condicional del paso 4.14.2. Fin del condicional del paso 4.1

Quitar(Q)Quitar(Q)

Si no Si no

Escribir “El elemento X no se Escribir “El elemento X no se encuentra en la lista”encuentra en la lista”

5. Fin del condicional del paso 4.5. Fin del condicional del paso 4.