You are on page 1of 3

Lista doblemente enlazada

En ciencias de la computacin, una lista doblemente enlazada es una estructura de datos


que consiste en un conjunto de nudos enlazados secuencialmente. Cada nudo contiene dos
campos, llamados enlaces, que son referencias al nodo siguiente y al anterior en la secuencia
de nudos. El enlace al nudo anterior del primer nudo y el enlace al nudo siguiente del ltimo
nudo, apuntan a un tipo de nudo que marca el final de la lista, normalmente un nudo
centinela o puntero null,para facilitar el recorrido de la lista. Si existe un nico nudo
centinela, entonces la lista es circular a travs del nudo centinela.

Una lista doblemente enlazada cuyos nodos contienen tres campos: un valor entero, el enlace al nodo
siguiente, y el enlace al nodo anterior.
El doble enlace de los nodos permite recorrer la lista en cualquier direccin. Mientras que
agregar o eliminar un nodo en una lista doblemente enlazada requiere cambiar ms enlaces
que en estas mismas operaciones en una lista enlazada simple, las operaciones son ms
simples porque no hay necesidad de mantener guardado el nodo anterior durante el recorrido,
ni necesidad de recorrer la lista para hallar el nodo anterior, la referencia al nodo que se quiere
eliminar o insertar es lo nico necesario.

Recorrido secuencial en ambas direcciones

Mayor ocupacin: 2 referencias en cada nodo

Insercin y borrado: Modificar ms referencias

Borrado ms simple: Localizado el elemento a borrar se accede al anterior /


siguiente

Las implementaciones para la lista doble son las misma que para la lista simple
con la diferencia de que la clase nodo de la clase lista doble tendr un nodo
adicional que viene a ser el nodo anterior. Otra diferencia es en la
implementacin del mtodo insertar nodo porque hay que tomar en cuenta que
ya no se maneja un solo enlace sino dos.

Otra ventaja de las listas doblemente enlazadas es que podemos usar un


puntero a la celda que contiene el i-simo elemento de una lista para representar
la posicin i, mejor que usar el puntero a la celda anterior aunque lgicamente,
tambin es posible la implementacin similar a la expuesta en las listas simples
haciendo uso de la cabecera. El nico precio que pagamos por estas
caractersticas es la presencia de un puntero adicional en cada celda y
consecuentemente procedimientos algo ms largos para algunas de las
operaciones bsicas de listas

En ciencias de la computacin, una lista enlazada es una de las estructuras de


datos fundamentales, y puede ser usada para implementar otras estructuras de datos.
Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y
una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de
las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos
enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco,
permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
Una lista enlazada es un tipo de dato autorreferenciado porque contienen un puntero o enlace
(en ingls link, del mismo significado) a otro dato del mismo tipo. Las listas enlazadas permiten
inserciones y eliminacin de nodos en cualquier punto de la lista en tiempo constante
(suponiendo que dicho punto est previamente identificado o localizado), pero no permiten
un acceso aleatorio. Existen diferentes tipos de listas enlazadas: listas enlazadas simples,
listas doblemente enlazadas, listas enlazadas circulares y listas enlazadas doblemente
circulares.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales
como Lisp, Scheme y Haskell tienen estructuras de datos ya construidas, junto con
operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a
objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas
enlazadas.

En las secciones anteriores se contemplaron diferentes estructuras estticas en


dnde la manipulacin de datos es a travs de posiciones localizadas
secuencialmente. Para de clarar estas estructuras se deba definir un tamao
determinado el cual no poda modificarse posteriormente. Esto puede ser un
problema en el caso de que:

no sepamos de antemano el tamao requerido para nuestra aplicacin


hay una gran cantidad de operaciones y manipulaciones de los datos
dentro de las estructuras

En estos casos es generalmente m&a acute;s conveniente utilizar estructuras


dinmicas, es decir, las cuales pueden aumentar o disminuir de tamao de
acuerdo a los requerimientos especficos del procedimiento. As se resuelve el
problema de no saber el tama&ntild e;o exacto desde un principio y las
manipulaciones de datos se pueden hacer de una manera mas rpida y eficiente.

Una lista ligada es entonces un grupo de datos organizados secuencialmente, pero


a diferencia de los arreglos, la organizacin no esta dada implcitamente por su
posicin en el arreglo. En una lista ligada cada elemento es un nodo que contiene
el dato y adems una liga al siguiente dato. Estas ligas son simplemente variables
que contienen la(s) direccin(es) de los datos contiguos o relacionados.

Para manejar una lista es necesario contar con un apuntador al primer elemento
de la lista "head" .

Las ventajas de las listas ligadas son que:

Permiten que sus tamaos cambien durante la ejecucin del programa


Proveen una major flexibilidad en el manejo de los datos.

Este principio de listas ligadas se puede aplicar a cualquiera de los conceptos de


estructura de datos vistos anteriormente: arreglos, colas y pilas . Es decir, las
operaciones de altas, bajas y cambios, as como bsquedas y ordenamientos se
tendrn que adaptar en la cuestin del manejo de localidades nicamente.

Listas ligadas sencillas

Una lista ligada sencilla es un grupo de datos en dnde cada dato contiene
adems un apuntador hacia el siguiente dato en la lista, es decir, una liga hacia el
siguiente dato.

You might also like