Вы находитесь на странице: 1из 17

LISTAS DOBLEMENTE

ENLAZADAS
Estructuras de Datos
Sección A
DEFINICIÓN
 Es una colección de nodos en la cual 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.

 Por medio de estos punteros se podrá avanzar o


retroceder a través de la lista, según se tomen las
direcciones de uno u otro puntero.
TIPOS
 Existen dos tipos:
 Lineales
 El apuntador del primer nodo hacia “anterior” o puntero
izquierdo apunta a null, al igual que el apuntador
“siguiente” o puntero derecho.
 Circulares
 El enlace anterior del primer nodo apunta al último y el
enlace siguiente del último nodo, apunta al primero.
Estructuralmente una lista circular doblemente enlazada
no tiene ni principio ni fin, pero el 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.
 Consideraciones
 Para mantener la estructura específica de las listas
es necesario tener un apuntador al primer nodo de la
misma, pero a veces se emplea más de un nodo
centinela, agregando un apuntador al último nodo.
Estructuralmente es incorrecto, pues se está
ocupando espacio de memoria para otro apuntador,
pero con las nuevas velocidades de procesamiento y
tamaños de memoria, esto ha tendido a ser una
práctica común.
 Para recorrer una lista o cola circular, se
recomienda usar el do {} while().
COMPARACIÓN ENTRE LISTAS
DOBLEMENTE ENLAZADAS Y ENLAZADAS
 Las listas doblemente enlazadas requieren más
espacio por nodo y sus operaciones básicas
resultan más costosas pero ofrecen una mayor
facilidad para manipular ya que permiten el
acceso secuencial a lista en ambas direcciones.
En particular, uno puede insertar o borrar un
nodo en un número fijo de operaciones dando
únicamente la dirección de dicho nodo (Las listas
simples requieren la dirección del nodo anterior
para insertar o suprimir correctamente). Algunos
algoritmos requieren el acceso en ambas
direcciones.
LISTAS DOBLEMENTE ENLAZADAS
 Operaciones
 Insertar
 Eliminar
 Recorrer
 Buscar
INSERCIÓN
El caso general para agregar un elemento a la lista
doblemente enlazada sigue los siguientes pasos:
1. Si la lista esta vacía, basta con que los punteros
Inicio y Fin apunten al nuevo nodo, y ambos punteros
del nodo hacia NULL
INSERCIÓN
2. Si la lista no esta vacía, utilizamos un puntero
temporal, temp, para movernos a la posición
deseada y una vez ahí realizamos lo siguiente:
1. Hacer que nuevo.siguiente apunte a temp.siguiente
2. temp.siguiente apunte a nuevo
3. nuevo.anterior apunte a temp
4. nuevo.siguiente.anterior apunte a nuevo
ELIMINAR
 El caso general para la eliminación de algún
elemento de la lista sigue los siguientes pasos:

1. Si la lista contiene un único elemento, basta con


hacer que los apuntadores Inicio y Fin apunten hacia
NULL.
ELIMINAR
2. Si la lista tiene mas de un elemento, utilizamos
un puntero temporal, temp, para recorer la lista
hasa la posicion deseada.
1. hacemos que temp = temp.anterior
2. temp.siguiente apunte a temp.siguiente.siguiente
3. temp.siguiente.anterior apunte a temp
4. al eliminar todas las referencias hacia el nodo, lo
sacamos de la lista.
LISTA DOBLEMENTE ENLAZADA CIRCULAR
 La implementación de este tipo de listas toma
como base las listas doblemente enlazadas
lineales, haciendo uso de los apuntadores Inicio y
Fin para facilitar sus operaciones.
 El procedimiento para agregar o eliminar un
nodo sigue los pasos de las lineales, pero les
agrega un paso de verificación, para asegurar la
integridad de la estructura.
INSERCIÓN
 El caso general para agregar un nodo a la lista
sigue los siguientes pasos:
 Si la lista esta vacía, basta con que los punteros
Inicio y Fin apunten al nuevo nodo, en este caso los
punteros anterior y siguiente apuntaran hacia la
dirección del mismo nodo.
 Si la lista no esta vacía, los pasos son los mismos que
un una lineal, teniendo en cuenta que si se agrega un
nodo al inicio o fin de la estructura, los apuntadores
Inicio y Fin deben ser modificados.
MATRIZ ORTOGONAL
DEFINICIÓN
 Este tipo de estructura es utilizada para
representar tablas con memoria dinámicas.
 Los nodos en esta estructura contiene cuatro
apuntadores hacia el nodo anterior, posterior,
superior e inferior respectivamente.
 Hay algunas variantes que pueden tener más
dimensiones, dependiendo de lo que se requiera.

Nodo
 Estructura básica Encabezados Columna

Encabezados Fila
VENTAJAS
 Capacidad de representar una tabla haciendo uso
de memoria dinámica, permitiendo aprovechar
mejor la memoria, solo utilizando lo necesario.

Вам также может понравиться