unidad iii listas enlazadas
TRANSCRIPT
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.