Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
Page
Sumario
3
Page
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.
• 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
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).
6
Page
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
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: 0 ≤ i < |L| , el valor de i tiene que estar entre 0 y la longitud de la lista
- 1.
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
10
Page
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
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.
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
14
Page
15
Page
16
Page