Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.

Slides:



Advertisements
Presentaciones similares
Juan F. Velazquez Mayra E. Beltran Jaime Lopez
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
1 Los nombres en español Los nombres en español 2 ¿Cuál es?
Los sustantivos y artículos en español.
Complejidad Computacional
Complejidad Computacional
Sociedad, tecnología, educación. 1 Seleccionar una imagen y relacionarla con los tres téminos propuestos. Por qué la elegimos, que vemos en esta imagen,
1 Los sustantivos en español Los sustantivos en español.
Cuestiones y problemas
Cuestiones y problemas
Curso de java básico (scjp)
Repaso Translate into English: ¿Qué hora es? de la mañana de la tarde
Possesives Test Spanish 1. Get your paper ready. Write your name except for Isai. Write the date. Write your class period. Number your paper 1-16.
Me llamo __________ Clase 9IM La fecha es el 24 de octubre del 2012
VOCABULARIO Las preguntas. 1. la pregunta (las preguntas) the question (the questions) 2. ¿Qué? What? 3. ¿Quién? Who/Whom? 4. ¿Cuándo? When?
generic constraint development environment
Lenguajes de Programación Soluciones a pruebas de nivel
Entrada y salida Fundamentos de programación/Programación I
MATLAB.
Algoritmo y Estructura de Datos I I Facultad de Ingeniería y Arquitectura Ing. Juan José Montero Román. Sesión 13 - Programación.
Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables.
Pilas Laboratorio de Programación II. Definición de pila Consideremos una pila de platos: Si se añade un plato a la pila, los que están más abajo son.
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Programación Concurrente en Java
Tipos de Datos Abstractos Vector de Racionales
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Packages –Unidad de compilación que permite la especificación.
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.
INFORMATICA I Funciones CLASE 13.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
1 Entrada/Salida en Java Jaime Ramírez, Ángel Lucas González DLSIIS. Facultad de Informática Universidad Politécnica de Madrid.
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Punteros Tipo access:
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Overloading de subprogramas procedure Put(Item: in integer;
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento.
Seminario de Lenguajes A – Opción Ada
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Programación Orientada a Objetos en Java
¿Quién la hizo? Tienes que adivinar quién hizo cada obra de arte, basado en los apuntes que tomaste y las obras que vimos de los artistas.
Marzo 2007 Lenguajes Visuales Clase III.
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Me llamo ________ Clase 10 NM La fecha es el Primero de febrero del 2012 Propósito # 27: ¿Cómo vives? Actividad Inicial: Copia y responde en oraciones.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Repaso (parte 2) Español 2. Como escribir una pregunta…  Adónde (to where)  Cómo (how)  Cuál/Cuáles (which ones)  Cuándo (when)  Cuánto (how much)
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
Introducción Program Slicing Pattern Matching Problema: Pérdida de precisión Solución Conclusiones Peculiaridades de Erlang Erlang Dependence Graph.
Herencia e Interfaces.
JAVA 1.5 Fernando Almeida Octubre Introducción Java Specification Request (JSR) 14Java Specification Request (JSR) 14 propone introducir tipos y.
Programación Orientada a Objetos usando C++
POO Java Módulo 3 Elementos de programas Identificadores
0. Desarrollo de Programas: técnica del refinamiento.
Clases abstractas no polimórficas para C++ Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática Agenda.
Ordenación, Clasificación
Técnicas avanzadas de programación Interfaces
Colecciones.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
ESTRUCTURA DE DATOS EN JAVA
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Ingeniería Directa. Generar código a través de modelos se le conoce como ingeniería directa.
Diseño y Programación Orientada a Objetos
Colecciones Carlos Fontela, 2008.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
LISTAS..
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Diseño y Programación Orientada a Objetos
Estructuras de datos y algoritmos
Aprendiendo Java Pilas y Colas Por Juan Astudillo.
Vectores Universidad de Puerto Rico en Humacao
Ingeniero en Computación José Alfredo Cobián Campos
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Transcripción de la presentación:

Estructuras de Datos y Algoritmos TDA LISTA

Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas y la estructura de datos

Diseño de una Clase (repaso)

¿Qué es una Lista? Ejemplo 1. ARENAS ALICEA, ALEXIS 2. CASANOVA DEL MORAL, LISA R 3. COLON VELEZ, MIGUEL A 4. GAMBOA NIEVES, EXEL 5. HERNANDEZ VIERA, MARIAN 6. JAIME COLLAZO, ASTRID M 7. MEDINA RIVERA, LUIS A 8. MUNOZ HERNANDEZ, JOSE L 9. NAVARRO LOPEZ, AIDA Y. 10. PASSAPERA SANCHEZ, LIANETTE 11. QUILES LOPEZ, JUAN 12. REYES COLON, JUAN C 13. REYES TORRES, JENNY 14. ROSADO MILLAN, ARELIS 15. SANTIAGO APONTE, MARIA M 16. TORRES VELAZQUEZ, DORCI LEE

Abstracción Características que tiene toda lista: tiene algo o está vacía si tiene algo... Tiene una cantidad finita de elementos Tiene un primer elemento tiene un último elemento cada elemento tiene una posición cada elemento tiene un sucesor (excepto el último) cada elemento tiene un predecesor (excepto el primero)

TDA Lista Una Lista es una colección lineal de objetos con las siguientes operaciones: crear una lista vacía detrminar si la lista está vacía determinar cantidad de elementos añadir item en determinada posición elininar iten de determinada posición ver el item en una posición dada

Interfaces una manera de representar un TDA en Java public interface ListInterface { public boolean isEmpty(); public int size(); public void add(int index, Object item); public Object get(int index) ; public void remove(int index); public void removeAll(); } // end ListInterface

¿Qué falta? Estructura de Datos –hay distintas opciones –podemos seleccionar un arreglo para guardar los items y un entero para saber cuantos items hay Algoritmos –dependen de la ED que se haya seleccionado

Una implantación con arreglos public class ListArrayBased implements ListInterface { private static final int MAX_LIST = 50; private Object items[]; // an array of list items private int numItems; // number of items in list public ListArrayBased() { items = new Object[MAX_LIST]; numItems = 0; } // end default constructor

public boolean isEmpty() {return (numItems == 0);} public int size() {return numItems;} // end size public void add(int index, Object item) { if (numItems <= MAX_LIST) { if (index >= 1 && index <= numItems+1) { for (int pos = numItems; pos >= index; pos--) { items[translate(pos+1)] = items[translate(pos)]; } // end for items[translate(index)] = item; numItems++; } } // end if } //end add

public Object get(int index) { if (index >= 1 && index <= numItems) { return items[translate(index)]; } // end if } // end get public void remove(int index) { if (index >= 1 && index <= numItems) { for (int pos = index+1; pos <= size(); pos++) { items[translate(pos-1)] = items[translate(pos)]; } // end for numItems--; } // end if } //end remove } // end ListArrayBased

Ilustración de add(3,44) k numItems ¿?...¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿?...¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44

Ilustración de add(3,44) k numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA 44 Sumar 1

Ilustración de add(3,44) K+ 1 numItems ¿? K-1 MAX Índices del arreglo k Posiciones del TDA

Ventajas y Desventajas de la implantación de listas con arreglos Ventajas –relativamente fácil –ED arrego es parecido a TDA lista Desventajas –se llena –hay que estar rodándolo

Listas enlazadas TDA Nodo Un Nodo es un par información y vínculo al próximo nodo con las siguientes operaciones: –constructor –setItem(x): pone x en el campo de información –setNext(n): pone n en el vínculo al próximo –getItem(): devuelve campo de información –getNext(): devuelve referencia al próximo inf o

Listas enlazadas Implantación de Nodo public class Node { private Object item; private Node next; public Node(Object newItem) { item = newItem; next = null; } // end constructor public Node(Object newItem, Node nextNode) { item = newItem; next = nextNode; } // end constructor public void setItem(Object newItem) { item = newItem; } // end setItem public Object getItem() { return item; } // end getItem public void setNext(Node nextNode) { next = nextNode; } // end setNext public Node getNext() { return next; } // end getNext } // end class Node

Listas enlazadas Implantación

public class ListReferenceBased implements ListInterface { // reference to linked list of items private Node head; private int numItems; // number of items in list //c ListReferenceBased(), isEmpty(), size() private Node find(int index) { Node curr = head; for (int skip = 1; skip < index; skip++) { curr = curr.getNext(); } // end for return curr; } // end find public Object get(int index) { if (index >= 1 && index <= numItems) { // get reference to node, then data in node Node curr = find(index); Object dataItem = curr.getItem(); return dataItem; } else { System.out.println( "List index out of bounds exception on get"); } // end if } // end get

public void add(int index, Object item) { if (index >= 1 && index <= numItems+1) { if (index == 1) { // insert the new node containing item at // beginning of list Node newNode = new Node(item, head); head = newNode; } else { Node prev = find(index-1); // insert the new node containing item after // the node that prev references Node newNode = new Node(item, prev.getNext()); prev.setNext(newNode); } // end if numItems++; } else { System.out.println( "List index out of bounds exception on add"); } // end if } // end add

Insertar nodos ilustración

public void remove(int index) { if (index >= 1 && index <= numItems) { if (index == 1) { // delete the first node from the list head = head.getNext(); } else { Node prev = find(index-1); // delete the node after the node that prev // references, save reference to node Node curr = prev.getNext(); prev.setNext(curr.getNext()); } // end if numItems--; } // end if else { System.out.println("List index out of bounds exception on remove"); } // end if } // end remove

Borrar nodos ilustración

Análisis de ambas implantaciones Con Arreglos. Suponer que hay N elementos en la lista añadir(k,x) –hay que rodar los que están de k en adelante –el peor caso es cuando k=1 –en ese caso hay que mover N cosas –hay otras 4 instrucciones fuera del ciclo –total de instrucciones en el peor caso: N+4

Análisis de ambas implantaciones Con Arreglos Delete(k) –hay que rodar los elementos desde después de la posición k –el peor caso es k=1 –en ese caso hay que mover N-1 cosas –hay otras 2 instrucciones fuera del ciclo –total de instrucciones en el peor caso: N+1

Análisis de ambas implantaciones Con listas enlazadas Add(k,x) –hay moverse de nodo en nodo hasta la posición k –el peor caso es k=n –en ese caso hay que moverse N-1 veces –hay otras 3 instrucciones fuera del ciclo –total de instrucciones en el peor caso: N+2

Análisis de ambas implantaciones Con listas enlazadas Remove(k,x) –hay moverse de nodo en nodo hasta la posición k –el peor caso es k=n –en ese caso hay que moverse N-1 veces –hay otras 3 instrucciones fuera del ciclo –total de instrucciones en el peor caso: N+2