LISTAS ENLAZADAS LINEALES
LA LISTA ENLAZADA básica
es la lista enlazada simple la cual tiene un enlace por nodo. Este
enlace apunta al siguiente nodo (o indica que tiene la dirección en memoria del
siguiente nodo) en la lista, o al valor NULL o
a la lista vacía, si es el último nodo.
LISTAS DOBLEMENTE ENLAZADAS Un
tipo de lista enlazada más sofisticado es la lista doblemente enlazada o
lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al
nodo anterior, o apunta al valor NULL
si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL
si es el último nodo.
En
algún lenguaje de muy bajo nivel, XOR-Linking ofrece una vía para implementar
listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque
esta técnica no se suele utilizar.
LISTAS ENLAZADAS CIRCULARES
En una lista enlazada circular, el primer y el
último nodo están unidos juntos. Esto se puede hacer tanto para listas
enlazadas simples como para las doblemente enlazadas. Para recorrer una lista
enlazada circular podemos empezar por cualquier nodo y seguir la lista en
cualquier dirección hasta que se regrese hasta el nodo original. Desde otro
punto de vista, las listas enlazadas circulares pueden ser vistas como listas
sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers
para “ingerir” datos, y para visitar todos los nodos de una lista a partir de
uno dado.
LISTAS ENLAZADAS
CIRCULARES SIMPLES
Cada
nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que
el siguiente nodo del último apunta al primero. Como en una lista enlazada
simple, los nuevos nodos pueden ser solo eficientemente insertados después de
uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una
referencia solamente al último elemento en una lista enlazada circular simple,
esto nos permite rápidas inserciones al principio, y también permite accesos al
primer nodo desde el puntero del último nodo.
LISTAS ENLAZADAS
DOBLEMENTE CIRCULARES
En
una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares
a los de la lista doblemente enlazada, excepto que el enlace anterior del
primer nodo apunta al último y el enlace siguiente del último nodo, apunta al
primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones
pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque
estructuralmente una lista circular doblemente enlazada no tiene ni principio
ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está
en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista
doblemente enlazada.
|