Está en la página 1de 6

Estructuras de datos Listas enlazadas

Listas Enlazadas

Las pilas tienen reglas estrictas para referenciar los datos almacenados en ellas,
además, las operaciones de recuperación son por naturaleza destructivas; es decir, acceder a
un elemento en una pila requiere sacarlo y, a menos que se almacene en otro sitio, se
destruye. Las pilas también requieren, al menos en concepto, de una zona de memoria
contigua para operar.

Al contrario que una pila, una lista enlazada puede acceder a su almacenamiento de
una forma aleatoria, ya que cada trozo de información lleva con él un enlace al siguiente
elemento de la cadena. Una lista enlazada requiere una estructura de datos compleja,
mientras que una pila puede operar con elementos simples o complejos. Una operación de
recuperación en una lista enlazada no elimina ni destruye el elemento de la lista; es
necesario añadir una operación específica de borrado.

Las listas enlazadas se utilizan para dos propósitos. El primero es crear arreglos de
tamaño desconocido en memoria. Si se conoce previamente la cantidad de almacenamiento,
se puede utilizar un simple arreglo; pero si no se conoce el tamaño real de una lista,
entonces hay que utilizar una lista enlazada. La segunda utilización de una lista enlazada es
en los archivos de almacenamiento en disco de bases de datos. Las listas enlazadas
permiten insertar y borrar elementos rápida y fácilmente sin volver a colocar el archivo
completo en el disco. Por estas razones, las listas enlazadas se utilizan extensamente en el
software de administración de bases de datos.

Las listas enlazadas pueden ser de dos tipos: simplemente enlazadas, o doblemente
enlazadas. Una lista simplemente enlazada contiene un enlace al siguiente elemento. Una
lista doblemente enlazada contiene enlaces al siguiente elemento y al elemento anterior en
la lista. El tipo lista que se utilice dependerá de la aplicación.

Listas simplemente enlazadas

Una lista simplemente enlazada necesita que cada elemento de información


contenga un enlace al siguiente elemento de la lista. Cada elemento generalmente consiste
en una estructura que contiene campos de información y punteros de enlace. El concepto de
una lista simplemente enlazada se muestra en la siguiente Figura.

Info0 Info1 Info2

enlace enlace NULL

Representación de una lista simplemente enlazada en memoria dinámica

MC. JJAP 1
Estructuras de datos Listas enlazadas

Hay dos formas de construir una lista simplemente enlazada. La primera


sencillamente añade cada nuevo elemento al principio o al final de la lista. La otra añade
elementos en un lugar específico de la lista (por ejemplo, en orden ascendente).

Pueden ocurrir tres posibles situaciones cuando se inserta un elemento en una lista
simplemente enlazada. Primero, el elemento se puede convertir en el nuevo primer
elemento; segundo, puede ser insertado entre otros dos elementos; tercero, se puede
convertir en el último elemento. Las siguientes figuras ilustran como cambian los enlaces
en cada uno de los casos.

Nuevo elemento
nuevo

NULL

Info0 Info1 Info2

enlace enlace NULL

Al insertar el nuevo elemento al principio de la lista queda:

nuevo

enlace

Info0 Info1 Info2

enlace enlace NULL

Al insertar el nuevo elemento en medio de la lista queda:

nuevo

enlace

Info0 Info1 Info2

enlace enlace NULL

MC. JJAP 2
Estructuras de datos Listas enlazadas

Al insertar el nuevo elemento al final de la lista queda:

nuevo

NULL

Info0 Info1 Info2

enlace enlace enlace

En el proceso de borrar un elemento de la lista simplemente enlazada, tal como en la


inserción, existen tres casos: borrar el primer elemento, borrar uno que está en medio, y
borrar el último elemento. Las siguientes figuras ilustran cada caso.

La lista inicial es:

Info0 Info1 Info2

enlace enlace NULL

Al borrar el primer elemento queda:

Elemento borrado

Info0 Info1 Info2

NULL enlace NULL

Al borrar un elemento de en medio queda:


Elemento borrado

Info0 Info1 Info2

enlace NULL NULL

MC. JJAP 3
Estructuras de datos Listas enlazadas

Al borrar el último elemento queda:

Elemento borrado

Info0 Info1 Info2

enlace NULL NULL

Las listas simplemente enlazadas tienen un gran inconveniente que impide su


utilización excesiva: la lista no se puede recorrer en sentido inverso. Por esta razón, se
utilizan generalmente las listas doblemente enlazadas (también llamadas bicolas).

Listas doblemente enlazadas

Las listas doblemente enlazadas consisten en datos y enlaces al siguiente elemento y


al elemento precedente. La siguiente figura ilustra como están colocados estos enlaces.

Info0 Info1 Info2

NULL NULL

Una lista que tiene dos enlaces en lugar de sólo uno tiene dos grandes ventajas.
Primero, la lista se puede leer en cualquier dirección. Esto no sólo simplifica la ordenación
de la lista, sino también, en el caso de una base de datos, permite a un usuario explorar la
lista en cualquier dirección. Segundo, ya que con el enlace hacia delante o con el enlace
hacia detrás se puede leer una lista completa, si un enlace no es válido, la lista se puede
reconstruir usando el otro enlace. Esto tiene sentido en caso de un fallo del equipo.

Se pueden realizar tres operaciones primarias en una lista doblemente enlazada para
insertar un nuevo elemento: insertar al principio, insertar en medio e insertar al último.
Construir una lista doblemente enlazada es similar a construir una lista simplemente
enlazada, excepto que la estructura debe tener un lugar para almacenar dos enlaces, uno
hacia delante y uno hacia atrás. Las siguientes figuras ilustran el proceso de insertar un
nuevo elemento en una lista doblemente enlazada.

MC. JJAP 4
Estructuras de datos Listas enlazadas

Nuevo
NUL L NULL

Info0 Info1 Info2

NULL NULL

Al insertar al principio de la lista queda:

Nuevo
NUL L

Info0 Info1 Info2


NULL

Al insertar en medio de la lista queda:

Nuevo

Info0 Info1 Info2

NULL NULL

MC. JJAP 5
Estructuras de datos Listas enlazadas

Al insertar al último de la lista queda:

Nuevo
NULL

Info0 Info1 Info2

NULL

La operación para borrar un elemento de la lista, al igual que las anteriores, también
tiene los mismos tres casos. Las siguientes figuras los ilustran.

Borrar el primer elemento:

Info0 Info1 Info2

NULL NULL NULL NULL

Elemento borrado

Borrar un elemento de en medio:

Info0 Info1 Info2

NULL NULL NULL NULL

Elemento borrado

Borrar el último elemento:

Info0 Info1 Info2

NULL NULL NULL NULL

Elemento borrado

MC. JJAP 6

También podría gustarte