Documentos de Académico
Documentos de Profesional
Documentos de Cultura
WILSON CHIACAIZA
JAIRO LEMA
RENE LASSO
EDISON JACOME
LISTAS DOBLEMENTE ENLAZADA
En las listas doblemente enlazadas, cada elemento contiene dos
punteros aparte del valor almacenado en el elemento. Un puntero
apunta al siguiente elemento de la lista y el otro puntero apunta al
elemento anterior. La figura 18.6. muestra una lista doblemente
enlazada y un nodo de dicha lista.
Las operaciones sobre una lista
doblemente enlazada son:
Crear lista
Insertar nodo al inicio y al Final
Eliminar nodo al inicio
Buscar o Recorrer
Existe una operación de insertar y eliminar (borrar) en
cada dirección. La figura 18.7. muestra el problema de
insertar un nodo p a la derecha del nodo actual. Deben
asignarse cuatro nuevos enlaces,
En el caso de eliminar (borrar) un nodo de una lista
doblemente enlazada es preciso cambiar dos punteros.
Declaración de una lista
doblemente enlazada
Una lista doblemente enlazada con valores de tipo int necesita dos
punteros y el valor del campo datos. En una estructura se agrupan estos
datos del modo siguiente:
Asignar un nuevo nodo apuntado por nuevo que es una variable puntero
que apunta al nuevo nodo que se va a insertar en la lista doble.
Situar el nuevo elemento en el campo dato del nuevo nodo.
Hacer que el campo enlace adelante del nuevo nodo apunte a la cabeza
(primer nodo) de la lista original, y que el campo enlace atras del nodo
cabeza apunte al nuevo nodo.
Hacer que cabeza (puntero cabeza) apunte al nuevo nodo que se ha
creado.
EJEMPLO DE LA
OPERACIÓN INSERTAR
CODIGO C
NULL
NULL Movemos los punteros
3 9 12
NULL 3 9 10 11 12
NULL
indice->ant->ant
indice->ant
indice
indice->proximo
Código C
typedef struct _nodo {
int dato;
struct _nodo *siguiente;
struct _nodo *anterior;
} tipoNodo;