Las listas encadenadas almacenan elementos de forma no contigua usando nodos que apuntan al siguiente nodo. Esto hace que ciertas operaciones como inserción y eliminación sean más eficientes, mientras que el acceso aleatorio a elementos es menos eficiente que en un vector. Las listas pueden ser de un solo enlace o doblemente enlazadas para permitir recorridos en ambas direcciones.
2. Una Estructura Encadenada
Una lista encadenada almacena una
secuencia lineal de elementos.
Usando una lista encadenada y sus
operaciones asociadas, podemos
construir, manipular y mantener una lista
de elementos
Mtl Lourdes Cahuich 2
3. Listas encadenadas
Las listas encadenadas comparten
muchas de las mismas operaciones de los
vectores
Ambas estructuras de datos soportan la
inserción y eliminación de elementos,
recorrido de elementos, y otras
operaciones básicas
Mtl Lourdes Cahuich 3
4. Listas encadenadas
La eficiencia de ciertas operaciones difiere
entre las listas encadenadas y los
vectores.
Por ejemplo, la operación asociada con
eliminar el primer elemento es más
eficiente en una lista encadenada que en
un vector
Mtl Lourdes Cahuich 4
5. Listas encadenadas
Por otro lado, acceder a un elemento
aleatorio en una secuencia almacenada
en un vector es más eficiente que en una
lista encadenada.
Estas diferencias en eficiencia están
basadas en la forma en que cada
estructura de datos almacena elementos
en la memoria.
Mtl Lourdes Cahuich 5
6. Almacenamiento en listas
encadenadas
Almacenamiento en el vector
Almacenamiento en la lista
Mtl Lourdes Cahuich 6
7. Listas encadenadas
La referencia es típicamente conocida
como quot;cadenaquot;, lo cual explica el nombre
de “Lista encadenada” o “linked list”
Es importante observar que se requiere
memoria extra para almacenar la cadena
para cada elemento de la lista.
Este requerimiento de memoria adicional
es una diferencia fundamental entre las
listas encadenadas y los vectores
Mtl Lourdes Cahuich 7
8. Listas encadenadas
Cuando los elementos son almacenados
un lugares contiguos de la memoria, el
acceso aleatorio de elementos es eficiente
porque la implantación puede computar
directamente el lugar de cualquier
elemento
El almacenamiento contiguo en la
memoria tiene un impacto adverso en
otras operaciones
Mtl Lourdes Cahuich 8
9. Listas encadenadas
El almacenamiento no-contiguo también
tiene sus ventajas y desventajas.
Una ventaja de una lista encadenada es
que podemos eliminar o agregar un
elemento simplemente reacomodando las
ligas o cadenas
Mtl Lourdes Cahuich 9
10. Listas encadenadas
Por otro lado, el acceso aleatorio de
elementos en una lista encadenada no es
tan eficiente como lo es en un vector.
Para acceder a un elemento específico en
una lista encadenada, debemos recorrer
todos los elementos desde el inicio hasta
que encontremos el elemento que
buscamos.
Mtl Lourdes Cahuich 10
11. Listas encadenadas
Esto se debe a que el uso de un
almacenamiento no-contiguo evita calcular
fácilmente donde está almacenado un
elemento específico
Mtl Lourdes Cahuich 11
12. Cómo Encadenar Elementos
Como vimos anteriormente, almacenar en
memoria sólo los datos del elemento no
es suficiente para mantener la estructura
de una lista encadenada
Cada elemento debe también indicar
donde se encuentra localizado el siguiente
elemento
Mtl Lourdes Cahuich 12
13. Cómo Encadenar Elementos
Como estamos trabajando con lugares de
memoria, encadenar los elementos
contenidos en una lista encadenada es
una aplicación perfecta para los
apuntadores
Mtl Lourdes Cahuich 13
15. Cómo Encadenar Elementos
Observa que el apuntador asociado con el
último elemento está establecido como un
apuntador nulo.
Esta es una técnica estándar usada para
denotar el último elemento de una lista
Mtl Lourdes Cahuich 15
17. Cómo Encadenar Elementos
Un nodo en una lista encadenada
contiene los datos para un elemento y
cualquier resguardo de información
necesario para mantener la
representación de la lista
Mtl Lourdes Cahuich 17
18. Cómo Encadenar Elementos
La estructura representada en la figura
anterior es conocida como una lista
sencillamente-encadenada (singly-linked
list) debido a que solamente existe una
cadena para cada nodo.
Mtl Lourdes Cahuich 18
19. Cómo Encadenar Elementos
Como sólo existe una cadena para cada
nodo, podemos recorrer una lista
sencillamente-encadenada solamente del
frente hacia atrás.
Mtl Lourdes Cahuich 19
21. Listas doblemente encadenadas
Para facilitar el recorrido de una lista en
cualquier dirección, podemos agregar un
apuntador adicional a cada nodo, que
apunte al nodo anterior de la lista.
Mtl Lourdes Cahuich 21
22. Listas doblemente encadenadas
Cada nodo tiene un nuevo apuntador que
hace referencia al nodo anterior de la lista.
Este tipo de lista encadenada es conocida
como lista doblemente-encadenada.
Una lista doblemente-encadenada nos
permite movernos hacia adelante y hacia
atrás en la lista.
Mtl Lourdes Cahuich 22