La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Conferencia 2 TDA Lista lineal.

Presentaciones similares


Presentación del tema: "Conferencia 2 TDA Lista lineal."— Transcripción de la presentación:

1 Conferencia 2 TDA Lista lineal

2 Sumario TDA. (Interfaz) TDA Lista Lineal TDA Número Entero
TDA Número Complejo TDA Lista Lineal Definición (Interfaz List) Ejemplo Lista secuencial Lista enlazada

3 Introducción Simples Estructurados Referencias Suministrados
Arreglos ( [ ] ) Cardinales (int, char) Clases (class) Números Reales (float, double) Referencias Referencias (new) Booleanos (bool) Definidos por el programador Enumerados

4 Introducción Con frecuencia se tiene un conjunto de elementos de la entidad del problema y la única relación entre ellas que nos interesa, es el hecho de que cada una tiene exactamente un sucesor, excepto la última y un antecesor, excepto la primera. Domingo – Lunes – Martes – Miércoles – Jueves – Viernes – Sábado 1941 – 1942 – 1943 – 1944 – 1945

5 TDA Un modelo matemático que describe o define un tipo de dato y en esta definición incluye la descripción de todo el comportamiento asociado al dato. Es muy importante aclarar que un TDA ni conlleva, ni está asociado a ninguna implementación.

6 TDA Cuando se define uno se hace en función de “Qué” se necesita modelar y no de “Cómo” debiera modelarse. Se centra en que necesidades se tienen y que el TDA debiera proporcionar una solución, sin pensar en cómo estas se resolverán.

7 TDA A la hora de implementar un TDA en la POO, es muy importante encapsular toda la lógica de almacenamiento y que la comunicación sea, sólo, a través de los métodos de acceso que se definen en la interfaz de la implementación del TDA. Es importante que se cree una muralla entre el “Qué” y el “Cómo”. (Ejemplo del TDA Dinero)

8 TDA Esto tiene como ventaja que los programas clientes que usen el TDA no dependan de la forma en la que estén almacenados los datos. Esto es importante ya a comienzos de un proyecto no se saben cual será la más adecuada forma de almacenar los datos.

9 TDA Esto se logra en Java mediante la utilización de una interfaz.

10 TDA Entero [-1, -2, -3, ... -∞] U [O, 1, 2, 3, ... ∞]
No se indica cómo debe estar almacenado: Solo se implementan rangos (Short, byte, int, long). Suma Resta Signo-Cantidad. Multiplicación Codificación en binario. División

11 TDA Entero (Implementación)

12 TDA Entero (Implementación)
float: 6 dígitos significativos. double: 15 dígitos significativos BigInteger: ∞

13 TDA Número Complejo Java no cuento con una estructura para representar este tipo de dato. Por tanto debemos pensar primeramente en un TDA número complejo y luego pensar en su implementación. Número complejo: (a,b) a + bi

14 TDA Número Complejo Operaciones: Suma Resta Producto División Potencia

15 TDA Número Complejo (Implement)

16 TDA Número Complejo (Implement)

17 TDA Lista lineal Normalmente las aplicaciones computacionales operan con conjuntos de informaciones, los cuales encierran relaciones estructurales importantes entre los datos. En su forma más simple, el conjunto de informaciones de una aplicación puede ser una lista lineal de elementos si las propiedades estructurales relevantes del conjunto encierran las respuestas a preguntas como las siguientes:

18 TDA Lista lineal ¿Cuál es el primer elemento de la lista?
¿Cuál es el último elemento? ¿Cuál elemento precede y cuál sigue a uno dado? ¿Cuántos elementos tiene la lista?

19 TDA Lista lineal (Definición)
Una lista lineal es un conjunto de N nodos l1, l2, … lN, con N ≥ 0, cuyas propiedades estructurales esenciales incluyen sólo las posiciones lineales (unidimensionales) relativas de los nodos; para ella se definen operaciones como las siguientes:

20 TDA Lista lineal (Definición)
Determinar la cantidad de nodos de la lista Tener acceso a un nodo Insertar un nodo en la lista Ordenar la lista de acuerdo a un criterio Eliminar un nodo de la lista Buscar el o los elementos de la lista con una característica dada, etc. Combinar dos o más listas en una Dividir una lista en dos o más listas

21 TDA Lista lineal (Definición)
N = 0 denota a la lista vacía, o sea, una lista que no tiene elemento. Si N > 0, l1 es el primer nodo Si 1 < k < N, lk es precedido por el nodo lk-1 y seguido por el nodo lk+1 Si N > 0, lN es el último nodo.

22 TDA Lista lineal (Ejemplo)
Un ejemplo de este TDA lo constituye el listado de los estudiantes de un grupo. Cada estudiante del grupo está representado por un nodo de la lista y la información que de él se almacena en el nodo puede variar de una aplicación a otra.

23 TDA Lista lineal (Ejemplo)
Operaciones: Inserciones de estudiantes en el grupo Eliminaciones de estudiantes del listado Accesos a la información de un estudiante en cuestión Verificaciones para determinar si un estudiante pertenece al grupo o no Entre otras.

24 TDA Lista lineal (Ejemplo)
Nótese que el mismo modelo de lista lineal, como TDA, nos sirve para representar y manipular la información relativa a trabajadores de una fábrica o a piezas en un almacén, etc. Evidentemente, se está haciendo una abstracción de los datos que va a manipular nuestra aplicación. Todo depende de lo que definamos como Nodo.

25 TDA Lista lineal (Ejemplo)
Un conjunto de operaciones sobre este TDA puede ser: boolean add(x): Añade el elemento x al final de la lista. boolean add(i, x): Añade el elemento x a la lista en la posición i, haciendo que los elementos li, li+1, … lN pasen a ser los elementos li+1, li+2, … lN+1 y que la longitud de la lista sea N +1. boolean addAll(Collection): Añade todos los elementos en el parámetro. Devuelve verdadero si se añadió alguno de los elementos.

26 TDA Lista lineal (Ejemplo)
void clear(): Elimina todos los elementos del contenedor. boolean contains(0bject): Devuelve verdadero si el contenedor almacena el parámetro. Object get(i): Devuelve el elemento almacenado en la posición i de la lista o el valor nulo si la posición i no existe. boolean remove(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 y que la longitud de la lista sea N -1. Devuelve verdadero si realiza la operación.

27 TDA Lista lineal (Ejemplo)
boolean remove(x): Si el parámetro x está en el contenedor, se elimina una instancia de ese elemento. Devuelve verdadero si se produce alguna eliminación. int size(): Devuelve la longitud de la lista, o sea, la cantidad de elementos que la conforman. boolean isEmpty(): Devuelve verdadero si la lista está vacía, y falso en caso contrario.

28 TDA Lista lineal A la hora de implementar el TDA Lista hay que tener en cuenta otros aspectos como la forma de almacenamiento y su estructura interna. Por su forma de almacenamiento, la lista lineal se puede implementar en una de las siguientes disposiciones: Secuencial Enlazada

29 Lista Secuencial Una de las formas más simples de implementación de este TDA parte del uso de un arreglo unidimensional. En este caso, todos los elementos que conforman la lista estarían almacenados en posiciones de memoria consecutivas. Por esta razón, se dice sigue una disposición secuencial en la memoria de la computadora.

30 Lista Secuencial +permite acceder a cualquier elemento de la estructura de datos en tiempo constante. -Existe un límite de la cantidad de elementos a existir en la lista.

31 Lista Enlazada Asigna memoria para el almacenar los elementos de la lista conforme se va necesitando, es decir a medida que se añaden o insertan los elementos, y se conectan los elementos de la lista con referencias. La memoria, es por supuesto, liberada cuando ya no se necesita más un elemento en la lista.

32 Lista Enlazada + No hay problemas en tiempo de ejecución al insertar elementos. - El acceso a un elemento de la lista tiene un costo de un O(n).

33 Estudio Independiente
Capítulo 6 del libro de Texto. Preparación previa de la CP.

34 Conferencia 2 TDA Lista lineal


Descargar ppt "Conferencia 2 TDA Lista lineal."

Presentaciones similares


Anuncios Google