Anda di halaman 1dari 10

LISTA DOBLEMENTE ENLAZADAS

Una lista doblemente enlazada es una lista enlazada de nodos, donde cada nodo tiene un par de campos de enlace, uno al nodo siguiente, y otro al anterior. Un campo de enlace permite atravesar la lista hacia adelante, mientras que el otro permite atravesar la lista hacia atrs.

Se tienen dos cabeceras, una para recorrer la lista de izquierda a derecha y otra para recorrerla de derecha a izquierda. Para usar la cabecera izquierda se utiliza el campo de enlace sgte. El final de dicha lista se la identifica cuando llega al null Mientras que con cabecera derecha se utiliza el campo de enlace ant. El final de la lista se la identifica cuando llega al null

El movimiento a travs de listas doblemente enlazadas es ms sencillo, ya que a partir de cualquier nodo, siempre es posible alcanzar cualquier nodo de la lista.

AADIR UN ELEMENTO A LA LISTA DOBLEMENTE ENLAZADA

Aadir elemento en una lista doblemente enlazada vaca

Creamos un nuevo nodo le asignamos un valor y por defecto lo apuntamos a null, tanto por izquierda como por derecha.

Debido a que la Lista se encuentra vaca tanto la cabecera izquierda y derecha se encuentran en null.

Escogemos la cabecera por la cual queremos aadir el nodo, apuntamos el nodo nuevo a cualquiera de las dos cabeceras, generalmente a la cabecera de la izquierda.

Finalmente luego de terminada la funcin en la cual se cre el nuevo nodo y se lo apunto a la Lista, se devuelve la nueva cabecera a la funcin principal e igualamos las cabeceras, ya que cuando solo se tiene un nodo las cabeceras sern las mismas.

NOTA: ENVIAMOS LOS DATOS NECESARIOS DESDE LA FUNCION PRINCIPAL.

Insertar una nueva cabecera izquierda Partimos de una lista no vaca.

Creamos un nuevo nodo, le asignamos un valor y lo apuntamos a null hacia atrs, el nuevo nodo lo apuntamos a la Lista (a la cabecera izquierda), la cabecera izquierda (cabi) la apuntamos al nuevo nodo y finalmente le decimos que la nueva cabecera izquierda es el nuevo nodo.

Finalmente luego de terminada la funcin en la cual se agreg una nueva cabecera izquierda se actualiza la Lista en la funcin principal agregndole un nuevo valor a dicha cabecera.

Insertar una nueva cabecera derecha Partimos de una lista no vaca.

Creamos un nuevo nodo, le asignamos un valor y lo apuntamos a null hacia adelante, la Lista (a la cabecera derecha) la apuntamos al nuevo nodo, el nuevo nodo lo apuntamos a la cabecera derecha (cabi) y finalmente le decimos que la nueva cabecera derecha es el nuevo nodo.

Finalmente luego de terminada la funcin en la cual se agreg una nueva cabecera izquierda se actualiza la Lista en la funcin principal agregndole un nuevo valor a dicha cabecera.

Insertar un nodo en una posicin x

Al igual que en los dos casos anteriores, partimos de una lista no vaca.

Creamos un nuevo nodo y le asignamos un valor (un dato). Tambin sacamos una copia de la Lista actual, esto para poder recorrerla hasta encontrar la posicin deseada, sin poner en riesgo la Lista original.

Con un ciclo vamos recorriendo la copia de la Lista hasta posicionarnos en un nodo anterior a la posicin deseada.

Modificamos las direcciones a donde apuntan los nodos, de tal manera que el nuevo nodo quede al centro del nodo anterior y del nodo siguiente.

Luego de hacer todas las modificaciones, actualizamos la Lista de tal manera que incluya al nuevo nodo.

Finalmente luego de terminar la funcin en la cual se agreg un nuevo nodo en una posicin x de la Lista, se debe llamar a dicha funcin desde la clase principal para que los cambios sean guardados.

Nota: Este mtodo es el mismo si es que se desea agregar el nodo comenzando a contar desde el lado izquierdo o derecho, lo nico que varia es que en uno se enva la cabecera izquierda y en otro la derecha y donde se pone sgte (en caso de la cabecera izquierda) se debe cambiar por ant (caso de la cabecera derecha) y viceversa.

Borrar cabecera izquierda

Obviamente antes de emplear este mtodo hay que asegurarse que la Lista no se encuentre vaca.

Cuando la Lista tenga solo un nodo, lo nico que se debe hacer es colocar ambas cabeceras en null, de manera que la Lista quede vaca.

Entonces lo que nos quedara resolver sera el caso en el que la Lista tenga ms de un nodo.

El mtodo es muy sencillo, se le asigna una nueva direccin a la cabecera, la cual es la direccin del nodo siguiente, y al nodo siguiente se le apunta ya no a la cabecera, sino al null, quedando totalmente anulada la cabecera y obteniendo una nueva.

Finalmente luego de terminar la funcin en la cual se elimin cabecera izquierda se actualiza la Lista en la funcin principal.

la

Borrar cabecera derecha

Las recomendaciones son exactamente las mismas que en el caso anterior y posteriormente se ver que las variaciones son mnimas.

Se le asigna una nueva direccin a la cabecera, la cual es la direccin del nodo anterior, y al nodo anterior se le apunta ya no a la cabecera, sino al null, quedando totalmente anulada la cabecera y obteniendo una nueva.

Finalmente luego de terminar la funcin en la cual se elimin cabecera derecha se actualiza la Lista en la funcin principal.

la

Borrar un nodo de una posicin x

Este mtodo se lo utiliza cuando se tienen ms de dos nodos, ya que de lo contrario tan solo se deber hacer una llamado a los mtodos anteriores.

Sacamos una copia de la Lista para evitar prdidas y con un ciclo vamos recorriendo la copia de la Lista hasta posicionarnos en un nodo anterior a la posicin deseada.

Se le asigna una nueva direccin al nodo anterior, la cual es la direccin del subsiguiente(nos saltamos el nodo siguiente), y al nodo subsiguiente se le apunta ya no al inmediato anterior, sino al que se encuentra dos lugares atrs, quedando totalmente anulado el nodo de la posicin seleccionada

Anda mungkin juga menyukai