Está en la página 1de 16

Lección 3

El TDA Lista. Realización del TDA Lista utilizando arreglos


lineales.
Índice
Sumario........................................................................................................................................................ 3
Introducción ................................................................................................................................................. 4
Objetivo de la lección............................................................................................................................. 4
Definición y Características ...................................................................................................................... 5
TDA Lista y sus operaciones .................................................................................................................... 7
Obtener (i) ............................................................................................................................................... 7
Insertar (x,i) ............................................................................................................................................. 8
Adicionar (x) ............................................................................................................................................ 8
Eliminar (x) .............................................................................................................................................. 9
Longitud (x) ............................................................................................................................................. 9
Longitud (x) ........................................................................................................................................... 10
Implementación mediante arreglos lineales ......................................................................................... 11
Desventajas........................................................................................................................................... 12
Implementación de una lista de arreglos .......................................................................................... 13
Conclusiones ............................................................................................................................................ 15
Bibliografía ................................................................................................................................................ 16

2
Page
Sumario

• Introducción a las listas


• Definición y características
• TDA Lista y sus operaciones
• Implementación del TDA Lista mediante arreglos lineales

3
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Introducción

En la solución computacional de varios problemas donde se requiere almacenar


colecciones de objetos de determinada clase las Listas juegan un papel fundamental.

Las Listas representan secuencias de elementos que presentan una particular flexibilidad
en su manejo: pueden crecer y acortarse según se requiera; los elementos son
accesibles y se pueden insertar y eliminar en cualquier posición de la lista. Esta
propiedad hace de las Listas una estructura muy utilizada por lo que dominar su
funcionamiento es imprescindible para cualquier profesional.

Las listas se presentan de manera rutinaria en aplicaciones de:

• Recuperación de información.
• Traducción de lenguajes de programación.
• Simulación.
• Técnicas de administración de memoria.
• Técnicas de compactación.
• Recolectores de basura.
• Represetanción de polinomios.
• Resolución de colisiones (Hash).
• Representación de Árboles y Grafos.

Dada la importancia de esta estructura la Lista será el primer TDA que estudiaremos.

Objetivo de la lección
Caracterizar el TDA Lista en cuanto a su funcionamiento, mediante el estudio de sus
características y el análisis de ejemplos, para aplicarlo en la solución de problemas.
4
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Definición y Características

El valor de i representa la posición del elemento en la lista, el orden no significa que el


elemento li sea mayor que el li-1, el orden lo da la posición en la lista.

En los ejemplos anteriores, la primera de las listas está formada por números enteros, la
lista M por cadenas que representan nombres de personas, la tercera esta formada por
otras listas, y la cuarta y última está formada por elementos de diferentes tipos (números
enteros y reales, cadenas, etc).

La cantidad de elementos de una lista se denota como |L|.


5
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
En muchos problemas se imponen restricciones a los elementos que se pueden
almacenar en una lista. Cuando una lista tiene todos sus elementos de un mismo tipo se
dice que ella es homogénea, en caso contrario es heterogénea, lo que significa que en
la lista puede haber elementos de diferentes tipos.

6
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
TDA Lista y sus operaciones

A continuación, veamos una definición formal del TDA Lista con sus operaciones, para
ello tomemos en cuenta que la lista es homogénea:

Nota Aclaratoria: En lo adelante debemos asumir que las posiciones de los elementos
de una lista son numeradas a partir del 0 para seguir la misma práctica de las librerías
de clases que existen en los diferentes entornos de desarrollo, a pesar de que esta
práctica no es la que más se acerca a la numeración que el hombre naturalmente realiza.

Obtener (i)
Una de las operaciones básicas del TDA Lista es Tipo Obtener ( i ). Devuelve el i-ésimo
elemento de la lista (el que se encuentra en la posición i). Si la posición i no existe se
dispara una excepción. No se modifica la lista.

Precondiciones: 0 ≤ i < |L|, el valor de i tiene que estar entre 0 y la longitud de la lista -
1.
7
Page

Poscondiciones: Lo = L **Lo representa el valor de la longitud antes de la operación.

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Insertar (x,i)
Una de las operaciones básicas del TDA Lista es Insertar (x, i). Inserta el elemento x en
la posición i, haciendo que los elementos li, li+1, …, ln pasen a ser los elementos li+1,
li+2, …, ln+1; incrementándose en uno la longitud de la lista. Si la operación no tiene
éxito, se dispara una excepción.

Precondiciones: 0 ≤ i ≤ |L|, el valor de i tiene que estar entre 0 y la longitud de la lista,


incluyendo ambos valores.

Poscondiciones: |L| = |Lo|+1, al finalizar la longitud de la lista tiene que haberse


incrementado en 1.

Si ejecuto Obtener (i) luego de Insertar (x, i), el elemento de la posición i tiene que ser x.

Adicionar (x)
Una de las operaciones básicas del TDA Lista es Adicionar (x). Adiciona el elemento x
en la cola de la lista (al final de la lista), haciendo que la longitud de la lista se incremente
en 1. Si la operación no tiene éxito, se dispara una excepción.

Precondiciones: No tiene, se puede ejecutar siempre.

Poscondiciones: |L| = |Lo|+1, al finalizar la longitud de la lista tiene que haberse


incrementado en 1.
8
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Eliminar (x)
Una de las operaciones básicas del TDA Lista es Eliminar (i). Elimina el elemento
almacenado en la posición i de la lista, haciendo que los elementos li+1, li+2, …, ln pasen
a ser los elementos li, li+1, …, ln-1. Esta operación disminuye en uno la longitud de la
lista. Si la posición i no existe se dispara una excepción.

Precondiciones: 0 ≤ i < |L| , el valor de i tiene que estar entre 0 y la longitud de la lista
- 1.

Poscondiciones: |L| = |Lo|-1 al finalizar la longitud de la lista tiene que haberse


decrementado en 1.

En este ejemplo se eliminó el elemento con valor 9 ya que es el que se encontraba en la


posición 5 de la lista inicialmente.

Longitud (x)
Una de las operaciones básicas del TDA Lista es Entero Longitud (). Devuelve |L|, la
longitud de la lista (cantidad de elementos). No se modifica la lista. 9
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Vacia (x)
Una de las operaciones básicas del TDA Lista es Lógico Vacía (). Devuelve verdadero si
la longitud de la lista es 0 y retorna falso en caso contrario. No se modifica la lista.

10
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Implementación mediante arreglos lineales

A continuación, se presenta la implementación del TDA Lista utilizando como estructura


de datos a los arreglos lineales. Los arreglos lineales son convenientes por una razón
fundamental, la simplicidad de su uso, además el tiempo de acceso a los elementos
individuales de un arreglo es fijo para todas las operaciones, lo que resulta muy eficiente.

En la implementación del TDA Lista mediante arreglos lineales, los elementos de ésta se
almacenan en celdas contiguas de un arreglo, como se muestra en la Figura 3.2. Esta
representación permite recorrer con facilidad una lista y agregarle elementos nuevos al
final. Pero insertar un elemento en la mitad de la lista obliga a desplazarse una posición
dentro del arreglo a todos los elementos que siguen al nuevo elemento para concederle
espacio.

En la Figura 3.3 se muestran dos posibles implementaciones del TDA Lista usando
arreglos lineales. Por un lado, la clase ListaArregloEst utiliza un arreglo de tamaño fijo,
es decir, una vez que la longitud de la lista alcance el tamaño del arreglo
(MAXELEMENTOS) no se podrán añadir más elementos a la lista. Por el otro lado, la
clase ListaArreglo utiliza un arreglo de tamaño dinámico, es decir, una vez que la longitud
de la lista alcance el tamaño del arreglo se deberá crear un arreglo con mayor tamaño
que reemplace al arreglo actual.
11
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Desventajas
Utilizar arreglos lineales como estructura de datos para la realización del TDA Lista es
conveniente por la simplicidad de su uso, además el tiempo de acceso a los elementos
individuales de un arreglo es fijo para todas las operaciones, lo que resulta muy eficiente.
Sin embargo, existen algunas desventajas que debemos considerar:

• El límite sobre la cantidad de elementos en la lista debe establecerse a priori.


• Uno de los requerimientos indispensables a la hora de construir un arreglo es que
hay que definir el tamaño que tendrá el arreglo lo que implica establecer a priori
un valor.
• Cuando la cantidad de elementos que tiene en el arreglo es menor que el tamaño
del arreglo tiene espacio reservado en memoria innecesariamente.
• Cuando utiliza un arreglo dinámico se genera un costo computacional adicional
cuando redimensiona el arreglo.
• Los valores almacenados en el arreglo deben ser del mismo tipo.
12
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Implementación de una lista de arreglos
Veamos algunos de los algoritmos necesarios para la implementación de las operaciones
del TDA Lista mediante arreglos dinámicos. Para ello implementaremos la clase
ListaArreglo del diagrama siguiente:

Método Obtener de la clase ListaArreglo:

Como se puede observar, la operación obtener tiene una complejidad temporal O (1)
debido a que el acceso a una posición de un arreglo se hace en tiempo constante.

Método Insertar de la clase ListaArreglo:

La operación insertar necesita desplazar a algunos elementos dentro del arreglo para
ubicar al elemento insertado en su posición, en el peor de los casos, que ocurre cuando
se inserta en la posición 0, se desplazarán todos los elementos de la lista; por lo tanto la
complejidad de este método es O(n).
13
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
El método REDIMENSIONAR quedaría de la siguiente manera:

14
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Conclusiones

Llegando hasta aquí, te sugerimos responder mentalmente las siguientes preguntas


relacionadas con el TDA Lista. No olvide compartir tus respuestas en el foro del
Tema 2.

• ¿Qué es una Lista?


• ¿Cuáles son las operaciones básicas del TDA Lista?
• ¿Qué estructura de datos podemos utilizar para implementar el TDA Lista?
¿Qué desventajas conlleva la utilización de esta estructura de datos?

15
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones
Bibliografía

• Data Structures and Algorithms in Java, Sección9.2, Peter Drake.


• Manual de la asignatura. Sección 1.1.
• Data Structures & Algorithms in Java - Robert Lafore. Capítulo 6

16
Page

Índice | Introducción | Definición y Características | TDA Lista y sus operaciones | Implementación


mediante arreglos lineales | Conclusiones

También podría gustarte