Está en la página 1de 4

Presentado por:

Jairo Alonso Parra Cantor


ID 725011
Universidad Minuto de Dios
Sede Soacha
Jornada: Nocturna
Año: 2020

TALLER # 2
LISTAS DOBLEMENTE ENLAZADAS:
Un tipo de lista enlazada que permite ir en ambas direcciones, hacia adelante y hacia atrás, en una lista
enlazada. Esta es la lista doblemente enlazada. Tal lista permite una gran variedad de operaciones
rápidas de actualización, incluyendo la inserción y el borrado en ambos extremos, y en el centro. Un
nodo en una lista doblemente enlazada guarda dos referencias un enlace siguiente, el cual apunta al
siguiente nodo en la lista, y un enlace prevé, el cual apunta al nodo previo en la lista.

—El almacenamiento con nexos en sólo un sentido tiene el problema de no permitir recorrido hacia
atrás, pero si se agrega un segundo apuntador se puede lograr este objetivo. —Pero tienen el problema
de requerir más espacio de memoria.

—La ventaja que proporciona esta estructura es la operación de búsqueda e inserción, recorriendo hacia
atrás en forma inmediata.

Una implementación de un nodo de una lista doblemente enlazada se muestra en el siguiente


código, donde nuevamente se asume que los elementos son
cadenas de caracteres.
CENTINELAS CABEZA Y COLA:

Para simplificar la programación, es conveniente agregar nodos especiales en los extremos de lista
doblemente enlazada: un nodo header (cabeza) justo antes de la cabeza de la lista, y un nodo tráiler
(cola) justo despu.es de la cola de la lista. Estos nodos \falsos" o centinelas no guardan ningún
elemento. La cabeza tiene una referencia sig. válida pero una referencia prev nula, mientras cola tiene
una referencia prev válida pero una referencia sig nula. Una lista doblemente enlazada con estos
centinelas se muestra en la. figura siguiente.

Un objeto lista enlazada podrá simplemente necesitar guardar referencias a estos dos centinelas y un
contador tan que guarde el número de elementos,
sin contar los centinelas, en la lista.

Insertar o remover elementos en cualquier extremo de la lista doblemente enlazada se hace directo.
Además, el enlace prev elimina la necesidad de
recorrer la lista para obtener el nodo que está antes de la cola.

Otras Operaciones.

 tLista crear ()
 void destruir (tLista l)
 tPosicion primero (tLista l)
 tPosicion fin (tLista l)
 void insertar (tElemento x, tPosicion p, tLista l)
 void borrar (tPosicion *p, tLista l)
 tElemento elemento (tPosicion p, tLista l)
 tPosicion siguiente (tPosicion p, tLista l)
 tPosicion anterior (tPosicion p, tLista l)
 tPosicion posicion (tElemento x, tLista l)

ESPECIFICACIÓN SEMANTICA Y SINTACTICA.

 tLista crear ()
Argumentos: Ninguno.
Efecto: (Constructor primitivo). Crea un objeto del tipo tLista.

 void destruir (tLista l)


Argumentos: Una lista.
Efecto: Destruye el objeto l liberando los recursos que empleaba. Para volver a usarlo habrá que
crearlo de nuevo.

 tPosicion primero (tLista l)


Argumentos: Una lista.
Efecto: Devuelve la posición del primer elemento de la lista.

 tPosicion fin (tLista l)


Argumentos: Una lista.
Efecto: Devuelve la posición posterior al último elemento de la lista.
 void insertar (tElemento x, tPosicion p, tLista l)
Argumentos:

l: Es modificada.
p: Es una posición válida para la lista l.
x: Dirección válida de un elemento del tipo T con que se instancia la lista, distinta de NULL.

Efecto: Inserta elemento x en la posición p de la lista l desplazando todos los demás elementos en una
posición.

 void borrar (tPosicion *p, tLista l)


Argumentos:

l: Es modificada.
p: Es una posición válida para la lista l.

Efecto: Elimina el elemento de la posición p de la lista l desplazando todos los demás elementos una
posición.

 tElemento elemento(tPosicion p, tLista l)


Argumentos:

l: Una lista.
p: Es una posción válida de la lista l.

Efecto: Devuelve el elemento que se encuentra en la posición p de la lista l.

 tPosicion siguiente (tPosicion p, tLista l)


Argumentos:

l: Una lista.
p: Es una posición válida para la lista l, distinta de fin(l).

Efecto: Devuelve la posición siguiente a p en l.

 tPosicion anterior (tPosicion p, tLista l)


Argumentos:

l: Una lista.
p: Es una posición válida para la lista l, distinta de primero(l).

Efecto: Devuelve la posición que precede a p en l.

 tPosicion posicion (tElemento x, tLista l)


Argumentos:

l: Una lista.
x: Dirección válida de un elemento del tipo T con que se instancia la lista, distinta de NULL.

Efecto: Si x se encuentra entre los elementos de la lista l, devuelve la posición de su primera ocurrencia.
En otro caso, devuelve la posición fin(l).

También podría gustarte