8 Listas Encadenadas

23
Listas encadenadas Listas encadenadas Apoyo SSD5 Apoyo SSD5

Transcript of 8 Listas Encadenadas

Page 1: 8 Listas Encadenadas

Listas encadenadasListas encadenadas

Apoyo SSD5Apoyo SSD5

Page 2: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 22

Una Estructura EncadenadaUna Estructura Encadenada

�� Una Una lista encadenadalista encadenada almacena una almacena una secuencia lineal de elementos.secuencia lineal de elementos.

�� Usando una Usando una lista encadenadalista encadenada y sus y sus operaciones asociadas, podemos operaciones asociadas, podemos construir, manipular y mantener una lista construir, manipular y mantener una lista de elementos de elementos

Page 3: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 33

Listas encadenadasListas encadenadas

�� Las listas encadenadas comparten Las listas encadenadas comparten muchas de las mismas operaciones de los muchas de las mismas operaciones de los vectoresvectores

�� Ambas estructuras de datos soportan la Ambas estructuras de datos soportan la inserción y eliminación de elementos, inserción y eliminación de elementos, recorrido de elementos, y otras recorrido de elementos, y otras operaciones básicas operaciones básicas

Page 4: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 44

Listas encadenadasListas encadenadas

�� La eficiencia de ciertas operaciones difiere La eficiencia de ciertas operaciones difiere entre las listas encadenadas y los entre las listas encadenadas y los vectores.vectores.

�� Por ejemplo, la operación asociada con Por ejemplo, la operación asociada con eliminar el primer elemento es más eliminar el primer elemento es más eficiente en una lista encadenada que en eficiente en una lista encadenada que en un vector un vector

Page 5: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 55

Listas encadenadasListas encadenadas

�� Por otro lado, acceder a un elemento Por otro lado, acceder a un elemento aleatorio en una secuencia almacenada aleatorio en una secuencia almacenada en un vector es más eficiente que en una en un vector es más eficiente que en una lista encadenada. lista encadenada.

�� Estas diferencias en eficiencia están Estas diferencias en eficiencia están basadas en la forma en que cada basadas en la forma en que cada estructura de datos almacena elementos estructura de datos almacena elementos en la memoria. en la memoria.

Page 6: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 66

Almacenamiento en listas Almacenamiento en listas encadenadasencadenadas

�� Almacenamiento en el vectorAlmacenamiento en el vector

�� Almacenamiento en la listaAlmacenamiento en la lista

Page 7: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 77

Listas encadenadasListas encadenadas

�� La referencia es típicamente conocida La referencia es típicamente conocida como "como "cadenacadena", lo cual explica el nombre ", lo cual explica el nombre de “de “Lista encadenadaLista encadenada” o “” o “linked listlinked list””

�� Es importante observar que se requiere Es importante observar que se requiere memoria extra para almacenar la cadena memoria extra para almacenar la cadena para cada elemento de la lista.para cada elemento de la lista.

�� Este requerimiento de memoria adicional Este requerimiento de memoria adicional es una diferencia fundamental entre las es una diferencia fundamental entre las listas encadenadas y los vectores listas encadenadas y los vectores

Page 8: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 88

Listas encadenadasListas encadenadas

�� Cuando los elementos son almacenados Cuando los elementos son almacenados un lugares contiguos de la memoria, el un lugares contiguos de la memoria, el acceso aleatorio de elementos es eficiente acceso aleatorio de elementos es eficiente porque la implantación puede computar porque la implantación puede computar directamente el lugar de cualquier directamente el lugar de cualquier elementoelemento

�� El almacenamiento contiguo en la El almacenamiento contiguo en la memoria tiene un impacto adverso en memoria tiene un impacto adverso en otras operacionesotras operaciones

Page 9: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 99

Listas encadenadasListas encadenadas

�� El almacenamiento noEl almacenamiento no--contiguo también contiguo también tiene sus ventajas y desventajas.tiene sus ventajas y desventajas.

�� Una ventaja de una lista encadenada es Una ventaja de una lista encadenada es que podemos eliminar o agregar un que podemos eliminar o agregar un elemento simplemente reacomodando las elemento simplemente reacomodando las ligas o cadenas ligas o cadenas

Page 10: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1010

Listas encadenadasListas encadenadas

�� Por otro lado, el acceso aleatorio de Por otro lado, el acceso aleatorio de elementos en una lista encadenada no es elementos en una lista encadenada no es tan eficiente como lo es en un vector.tan eficiente como lo es en un vector.

�� Para acceder a un elemento específico en Para acceder a un elemento específico en una lista encadenada, debemos recorrer una lista encadenada, debemos recorrer todos los elementos desde el inicio hasta todos los elementos desde el inicio hasta que encontremos el elemento que que encontremos el elemento que buscamos. buscamos.

Page 11: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1111

Listas encadenadasListas encadenadas

�� Esto se debe a que el uso de un Esto se debe a que el uso de un almacenamiento noalmacenamiento no--contiguo evita calcular contiguo evita calcular fácilmente donde está almacenado un fácilmente donde está almacenado un elemento específicoelemento específico

Page 12: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1212

Cómo Encadenar ElementosCómo Encadenar Elementos

�� Como vimos anteriormente, almacenar en Como vimos anteriormente, almacenar en memoria sólo los datos del elemento no memoria sólo los datos del elemento no es suficiente para mantener la estructura es suficiente para mantener la estructura de una lista encadenadade una lista encadenada

�� Cada elemento debe también indicar Cada elemento debe también indicar donde se encuentra localizado el siguiente donde se encuentra localizado el siguiente elementoelemento

Page 13: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1313

Cómo Encadenar ElementosCómo Encadenar Elementos

�� Como estamos trabajando con lugares de Como estamos trabajando con lugares de memoria, encadenar los elementos memoria, encadenar los elementos contenidos en una lista encadenada es contenidos en una lista encadenada es una aplicación perfecta para los una aplicación perfecta para los apuntadoresapuntadores

Page 14: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1414

Page 15: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1515

Cómo Encadenar ElementosCómo Encadenar Elementos

�� Observa que el apuntador asociado con el Observa que el apuntador asociado con el último elemento está establecido como un último elemento está establecido como un apuntador nulo.apuntador nulo.

�� Esta es una técnica estándar usada para Esta es una técnica estándar usada para denotar el último elemento de una lista denotar el último elemento de una lista

Page 16: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1616

Page 17: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1717

Cómo Encadenar ElementosCómo Encadenar Elementos

�� Un Un nodonodo en una lista encadenada en una lista encadenada contiene los datos para un elemento y contiene los datos para un elemento y cualquier resguardo de información cualquier resguardo de información necesario para mantener la necesario para mantener la representación de la lista representación de la lista

Page 18: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1818

Cómo Encadenar ElementosCómo Encadenar Elementos

�� La estructura representada en la figura La estructura representada en la figura anterior es conocida como una anterior es conocida como una lista lista sencillamentesencillamente--encadenadaencadenada ((singlysingly--linkedlinkedlistlist) ) debido a que solamente existe una debido a que solamente existe una cadena para cada nodo.cadena para cada nodo.

Page 19: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 1919

Cómo Encadenar ElementosCómo Encadenar Elementos

�� Como sólo existe una cadena para cada Como sólo existe una cadena para cada nodo, podemos recorrer una lista nodo, podemos recorrer una lista sencillamentesencillamente--encadenada solamente del encadenada solamente del frente hacia atrás. frente hacia atrás.

Page 20: 8 Listas Encadenadas

Listas doblemente Listas doblemente encadenadasencadenadas

Page 21: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 2121

Listas doblemente encadenadasListas doblemente encadenadas

�� Para facilitar el recorrido de una lista en Para facilitar el recorrido de una lista en cualquier dirección, podemos agregar un cualquier dirección, podemos agregar un apuntador adicional a cada nodo, que apuntador adicional a cada nodo, que apunte al nodo anterior de la lista.apunte al nodo anterior de la lista.

Page 22: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 2222

Listas doblemente encadenadasListas doblemente encadenadas

�� Cada nodo tiene un nuevo apuntador que Cada nodo tiene un nuevo apuntador que hace referencia al nodo anterior de la lista.hace referencia al nodo anterior de la lista.

�� Este tipo de lista encadenada es conocida Este tipo de lista encadenada es conocida como como lista doblementelista doblemente--encadenadaencadenada..

�� Una lista doblementeUna lista doblemente--encadenada nos encadenada nos permite movernos hacia adelante y hacia permite movernos hacia adelante y hacia atrás en la lista.atrás en la lista.

Page 23: 8 Listas Encadenadas

Mtl Lourdes CahuichMtl Lourdes Cahuich 2323