PDF de programación - 9 Estructuras de datos: Listas Uni y Bidireccionales

Imágen de pdf 9 Estructuras de datos: Listas Uni y Bidireccionales

9 Estructuras de datos: Listas Uni y Bidireccionalesgráfica de visualizaciones

Publicado el 16 de Enero del 2021
332 visualizaciones desde el 16 de Enero del 2021
83,1 KB
5 paginas
Creado hace 9a (01/10/2014)
A. Dasso, A. Funes -

Introducción a la Programación -

Notas de Clase

Listas

9 ESTRUCTURAS DE DATOS: LISTAS UNI Y BIDIRECCIONALES

9.1 LISTAS UNIDIRECCIONALES

COMPOSICIÓN DE LOS ELEMENTOS

Los elementos de una lista unidireccional o secuencia, llamados nodos, constan de dos partes:

La Variable de Información Propiamente Dicha (VIPD), que es donde se almacena la información que
corresponde a cada elemento de la lista. Las VIPDs de una lista son todas del mismo tipo, aun cuando, obviamente,
puedan no tener necesariamente el mismo valor.

El puntero al elemento (nodo) siguiente en la lista, el cual puede encontrase no necesariamente contiguo. En el

caso del último elemento, el puntero no apunta a un elemento y se dice que su valor es nil.

ORDEN CRONOLÓGICO

Las listas tienen un orden para la inspección de sus elementos, que va del primer elemento al último. Es decir,
para acceder al elemento i-ésimo de la lista es necesario haber pasado por los i-1 elementos anteriores. Este orden
está dado por los punteros de cada elemento, donde cada uno apunta al elemento que le sigue en la secuencia. Para
ello se cuenta con un acceso inicial que apunta al primer elemento de la lista. En caso de que la lista se encuentre
vacía, no habrá primer elemento y el acceso apuntará a nil.

No hay un orden cronológico ni para la entrada (inserción) de elementos ni para la salida (supresión) de los

mismos. Es decir, los elementos pueden insertarse y suprimirse en cualquier orden.

CAPACIDAD

La capacidad teórica de las listas unidireccionales es dinámica, es decir que crece con las inserciones y

disminuye con las supresiones.

OPERACIONES

Se pueden realizar las operaciones de:

Inserción de un elemento, en cualquier lugar de la estructura.

Supresión de cualquier elemento que se encuentre en la estructura.

Inspección de cualquier elemento que se encuentre en la estructura.

Dado que las listas son estructuras dinámicas, es necesario además contar con dos predicados lógicos para

controlar el desborde y el desfonde de la estructura.

En todos los casos, el acceso es secuencial, es decir del primero al último elemento. Quiere decir que, por
ejemplo, para acceder (inspeccionar) el quinto elemento, a partir del primero, debe pasarse por los cuatro elementos
anteriores. Esto suponiendo que la lista tenga al menos cinco elementos.

Las listas unidireccionales tienen asociado un cursor que permite marcar, señalar, un elemento. Este elemento,
señalado o apuntado por el cursor, será llamado el elemento corriente; es el elemento sobre el cual se puede operar,
es decir que puede inspeccionarse, suprimirse, o donde, entre él y el anterior, podrá insertarse un nuevo elemento.

Para mover el cursor dentro de la lista, será necesaria, además, una operación para avanzar el cursor de a una

U.N.S.L. Argentina

89

Departamento de Informática

A. Dasso, A. Funes -

Introducción a la Programación -

Notas de Clase

Listas

posición, y otra para colocarlo en la primera posición de la lista.

Un cursor es básicamente un puntero externo a la lista que toma un valor de puntero, es decir, apunta a un

elemento de la lista o inclusive a nil. Podemos decir que el cursor de una lista es el selector implícito de la misma.

REPRESENTACIÓN GRÁFICA

La lista de la Figura 9.1 está representada gráficamente de izquierda a derecha. Los nodos marcados como
primer elemento y último elemento se corresponden con el orden de acceso o inspección de los elementos de la lista,
considerado desde el acceso a la misma.

Por supuesto, la representación gráfica puede hacerse como se desee, verticalmente en el papel, con el primero

arriba o abajo; horizontalmente en el papel, con el primero a la derecha o a la izquierda; o inclusive oblicuamente.

primer
elemento

VIPD



cursor



último
elemento

Z

Y

T

R

E



acceso

puntero al siguiente elemento


Figura 9.1 Una lista de caracteres.


nil



9.2 LISTAS BIDIRECCIONALES

COMPOSICIÓN DE LOS ELEMENTOS

Los elementos o nodos de una lista bidireccional constan de tres partes:

La Variable de Información Propiamente Dicha (VIPD), que es donde se almacena la información que
corresponde a cada elemento de la lista. Las VIPDs de una lista son todas del mismo tipo, aun cuando, obviamente,
puedan no tener necesariamente el mismo valor.

El Puntero al elemento siguiente; este puede apuntar a nil cuando no hay un elemento al que apuntar (caso del

último elemento). Este puntero se conoce también como puntero adelante o en inglés forward pointer.

El Puntero al elemento anterior, este puede apuntar a nil cuando no hay un elemento al que apuntar (caso del

primer elemento). Este puntero se conoce también como puntero atrás o en Inglés backward pointer.

Recordemos que, como ya dijimos para las listas unidireccionales, cuando un puntero no apunta a un elemento se

dice que su valor es nil.

ORDEN CRONOLÓGICO

En las listas bidireccionales, al igual que en las unidireccionales, existe un orden de inspección secuencial de los
elementos; sin embargo, en las bidireccionales, como su nombre lo indica, no solo va del primer elemento al último
sino también del último al primero. Este orden está dado por los punteros de cada nodo de la lista, los que apuntan
uno al elemento anterior y el otro al siguiente.

U.N.S.L. Argentina

90

Departamento de Informática

A. Dasso, A. Funes -

Introducción a la Programación -

Notas de Clase

Listas

Igual que en el caso de las listas unidireccionales, se cuenta con un acceso a la lista que apunta a un elemento de
la lista. Es por ello que se puede reconocer un elemento como el primero: es aquel que es apuntado por el acceso a la
lista. Cuando la lista se encuentra vacía el acceso apunta a nil.

No hay un orden cronológico ni para la entrada (inserción) de elementos ni para la salida (supresión) de los

mismos.

CAPACIDAD

La capacidad teórica de las listas bidireccionales es dinámica, crece y disminuye con las inserciones y

supresiones, respectivamente.

OPERACIONES

Se pueden realizar las operaciones de:

Inserción de un elemento, en cualquier lugar de la estructura.

Supresión de cualquier elemento que se encuentre en la estructura.

Inspección de cualquier elemento que se encuentre en la estructura.

Dado que las listas son estructuras dinámicas, es necesario además contar dos con predicados lógicos para

controlar el desborde y el desfonde de la estructura.

En todos los casos, el acceso es secuencial, es decir del primero al último y/o del último al primero. Quiere decir
que, por ejemplo, para acceder (inspeccionar) al octavo elemento, a partir del primero, deberá pasarse por los siete
elementos anteriores. Para ir al cuarto elemento, a partir del último, deberá pasarse por todos los elementos de la
lista que estén entre el último y el cuarto elemento; por ejemplo, suponiendo que la lista tiene ocho elementos,
significa que habrá que pasar por los elementos octavo, séptimo, sexto y quinto.

Las listas bidireccionales tienen asociado un cursor que permite marcar, señalar, apuntar un elemento. Este
elemento, así apuntado o señalado, será el elemento corriente, aquel que puede inspeccionarse, suprimirse, o donde,
entre el anterior y el corriente, podrá insertarse uno nuevo. En consecuencia, para poder operar sobre un elemento es
necesario que el cursor se encuentre apuntándolo, es decir, que sea el elemento corriente. Si el cursor se encuentra
apuntando a otro elemento, habrá que moverlo hacia delante o hacia atrás de acuerdo a dónde se lo quiera llevar.
Consecuentemente, serán necesarias dos operaciones: una para avanzar el cursor hacia adelante de a una posición
y otra para volverlo una posición hacia atrás. Asimismo, será necesaria otra operación para colocarlo en la primera
posición de la lista, cuando sea necesario.

Un cursor es básicamente un puntero a la lista, que toma un valor puntero lo que le permite apuntar a un
elemento de la lista, o inclusive a nil en situaciones tales como: cuando la lista se encuentra vacía, cuando el cursor
se encuentra apuntando fuera de la lista ya sea después del último en las listas uni y bidireccionales o cuando se lo
ha hecho retroceder ‘después’ del primero en las listas bidireccionales. Para estas situaciones existe un predicado
isOOS (is Out of Structure) que devolverá verdadero de encontrarse el cursor con el valor nil y falso en todos los
otros casos.

Podemos decir que el cursor de una lista es el selector implícito de la misma.

REPRESENTACIÓN GRÁFICA

La lista bidireccional de la Figura 9.2 está representada gráficamente de izquierda a derecha. Los elementos
marcados como primer elemento y último elemento corresponden al orden de los elementos en la lista considerando

U.N.S.L. Argentina

91

Departamento de Informática

A. Dasso, A. Funes -

Introducción a la Programación -

Notas de Clase

Listas

el orden de inspección de los mismos desde el acceso a la misma.

Por supuesto, la representación gráfica puede hacerse como se desee, verticalmente en el papel, con el primero

arriba o abajo; horizontalmente en el papel, con el primero a la derecha o a la izquierda; o inclusive oblicuamente.



nil

primer
elemento

cursor



puntero al

elemento anterior

último
elemento

Z

Y

T

R

E



acceso

puntero al

siguiente elemento

VIPD



Figura 9.2. Una lista bidireccional de caracteres

nil



9.3 GENERALIDAD DE LAS LISTAS

Las listas, uni y bidireccionales, son estructuras de datos, que por las escasas restricciones impuestas a las
mismas, frente a las otras estructuras, permiten emplearlas fácilmente
  • Links de descarga
http://lwp-l.com/pdf18709

Comentarios de: 9 Estructuras de datos: Listas Uni y Bidireccionales (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad