Unidad III Listas Enlazadas

72
UNIDAD V UNIDAD V Listas enlazadas. Listas enlazadas.

Transcript of Unidad III Listas Enlazadas

Page 1: Unidad III Listas Enlazadas

UNIDAD VUNIDAD V

• Listas enlazadas.Listas enlazadas.

Page 2: Unidad III 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.

Page 3: Unidad III Listas Enlazadas

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.

Page 4: Unidad III Listas Enlazadas

CONTENIDOCONTENIDO

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

• Aplicaciones.Aplicaciones.

Page 5: Unidad III Listas Enlazadas

OBJETIVOS ESPECIFICOSOBJETIVOS ESPECIFICOS

Page 6: Unidad III Listas Enlazadas

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.

Page 7: Unidad III Listas Enlazadas

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.

Page 8: Unidad III Listas Enlazadas

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

Page 9: Unidad III Listas Enlazadas

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.

Page 10: Unidad III Listas Enlazadas

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.

Page 11: Unidad III Listas Enlazadas

LISTAS ENLAZADASLISTAS ENLAZADAS

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

Page 12: Unidad III Listas Enlazadas

ESTRUCTURA DE UN ESTRUCTURA DE UN NODONODO

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

Page 13: Unidad III Listas Enlazadas

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

Page 14: Unidad III Listas Enlazadas

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.

Page 15: Unidad III Listas Enlazadas

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.

Page 16: Unidad III Listas Enlazadas

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.

Page 17: Unidad III Listas Enlazadas

LISTAS SIMPLEMENTE LISTAS SIMPLEMENTE ENLAZADAS LINEALESENLAZADAS LINEALES

Page 18: Unidad III Listas Enlazadas

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.

Page 19: Unidad III Listas Enlazadas

INSERTAR AL INICIO DE INSERTAR AL INICIO DE UNA LISTAUNA LISTA

Page 20: Unidad III Listas Enlazadas

INSERTAR AL FINAL DE INSERTAR AL FINAL DE UNA LISTAUNA LISTA

Page 21: Unidad III Listas Enlazadas

INSERTAR UN NODO INSERTAR UN NODO ANTES QUE OTROANTES QUE OTRO

Page 22: Unidad III Listas Enlazadas

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

Page 23: Unidad III Listas Enlazadas

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.

Page 24: Unidad III Listas Enlazadas

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

Page 25: Unidad III Listas Enlazadas

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

Page 26: Unidad III Listas Enlazadas

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

Page 27: Unidad III Listas Enlazadas

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

INFORMACIÓN XINFORMACIÓN X

Page 28: Unidad III Listas Enlazadas

BÚSQUEDABÚSQUEDA

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

Page 29: Unidad III Listas Enlazadas

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

DESORDENADADESORDENADA

Page 30: Unidad III Listas Enlazadas

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

ORDENADAORDENADA

Page 31: Unidad III Listas Enlazadas

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

Page 32: Unidad III Listas Enlazadas

INSERTAR AL INICIOINSERTAR AL INICIO

Page 33: Unidad III Listas Enlazadas

INSERTAR AL FINALINSERTAR AL FINAL

Page 34: Unidad III Listas Enlazadas

INSERTAR ANTES DE UN INSERTAR ANTES DE UN NODO DADONODO DADO

Page 35: Unidad III Listas Enlazadas

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

Page 36: Unidad III Listas Enlazadas

ELIMINAR EL PRIMER ELIMINAR EL PRIMER NODONODO

Page 37: Unidad III Listas Enlazadas

ELIMINAR EL ÚLTIMO ELIMINAR EL ÚLTIMO NODONODO

Page 38: Unidad III Listas Enlazadas

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

Page 39: Unidad III Listas Enlazadas

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

Page 40: Unidad III Listas Enlazadas

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

DADODADO

Page 41: Unidad III Listas Enlazadas

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

Page 42: Unidad III Listas Enlazadas

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.

Page 43: Unidad III Listas Enlazadas

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).

Page 44: Unidad III Listas Enlazadas

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

Page 45: Unidad III Listas Enlazadas

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

Page 46: Unidad III Listas Enlazadas

INSERTAR AL INICIO DE LA INSERTAR AL INICIO DE LA LISTALISTA

Page 47: Unidad III Listas Enlazadas

INSERTAR AL FINAL DE LA INSERTAR AL FINAL DE LA LISTALISTA

Page 48: Unidad III Listas Enlazadas

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

COMO REFERENCIACOMO REFERENCIA

Page 49: Unidad III Listas Enlazadas

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

COMO REFERENCIACOMO REFERENCIA

Page 50: Unidad III Listas Enlazadas

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.

Page 51: Unidad III Listas Enlazadas

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

Page 52: Unidad III Listas Enlazadas

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)

Page 53: Unidad III Listas Enlazadas

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

Page 54: Unidad III Listas Enlazadas

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)

Page 55: Unidad III Listas Enlazadas

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

Page 56: Unidad III Listas Enlazadas

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

Page 57: Unidad III Listas Enlazadas

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

Page 58: Unidad III Listas Enlazadas

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.

Page 59: Unidad III Listas Enlazadas
Page 60: Unidad III Listas Enlazadas
Page 61: Unidad III Listas Enlazadas
Page 62: Unidad III Listas Enlazadas
Page 63: Unidad III Listas Enlazadas
Page 64: Unidad III Listas Enlazadas
Page 65: Unidad III Listas Enlazadas
Page 66: Unidad III Listas Enlazadas
Page 67: Unidad III Listas Enlazadas
Page 68: Unidad III Listas Enlazadas
Page 69: Unidad III Listas Enlazadas
Page 70: Unidad III Listas Enlazadas
Page 71: Unidad III Listas Enlazadas
Page 72: Unidad III Listas Enlazadas