CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS

Documentos relacionados
Tipo de dato Abstracto (Tad) PILAS COLAS

Estructuras de Datos

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.

Estructuras de Datos Clase 4 Pilas y colas

Pilas Motivación

Tema: Estructura Pila.

Programación de sistemas Pilas y Colas

Las FILAS. ING PEDRO BELTRÁN CANESSA Estructuras de Datos 1

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Estructuras de datos en memoria principal

Estructuras de Datos Dinámicas: Tipo de Dato Abstracto parte I. Programación I Departamento de Informática Universidad Nacional de San Luis Argentina

Tema 8- Implementación de Pila, Cola y. Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés. Representación Eficaz de una EDA

Tema 5. Estructura de datos Pila

Tema 7. Colas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía. {badia, bmartine,

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Estructuras de Datos Clase 4 Pilas y colas

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Listas, pilas, colas

Tema 4- Representación Enlazada

Tema: Tipos Abstractos de Datos (TAD s) en C#.

Tipos de Datos Abstractos

Colas. 5.1 Implementación

1. El Tipo Abstracto de Datos.

Algoritmos y Estructuras de Datos Pilas LIFO y Colas FIFO. Guillermo Román Díez

Tema 6. Gestión dinámica de memoria

TAD: Pila. TALLER: TAD Pila

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

Estructuras Dinámicas de datos.

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

Programación de sistemas

PILAS. Prof. Ing. M.Sc. Fulbia Torres

Programación de sistemas Listas enlazadas

SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana)

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

PROGRAMACIÓN GENÉRICA

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C

Estructuras Enlazadas AyED UTN-BA

Prueba N o 1. Programación II

1 Introducción a los algoritmos y a la programación de computadoras... 1

Taller de Programación I. Tema 08: Estructuras Dinámicas de Datos en Java

INFORMATICA II PRIMER PARCIAL

Para la Implementación Dinámica de listas: Se usa la asignación dinámica de memoria mediante punteros o referencias.

2.- PROGRAMACIÓN ORIENTADA A OBJETOS

Estructuras de datos. Colecciones en C#. Arreglos, Listas, Pilas, Colas y Árboles Métodos de búsqueda y ordenamiento

Unidad Nº V Listas Enlazadas

Soluciones Ejercicios Tema 7. Cambio de Signo Pila (3/3) if (!p.esvacia()) { d i l cambiasignopila(p); this.apilar(new Integer(-dato));

Guía práctica de estudio 05. Estructuras de datos lineales: Pila y cola.

Tema 02: TAD Pila. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Trabajo Práctico Nº 10 Estructuras Dinámicas: Pila y Cola.

Ejercicio 1 (proyecto prlistas, paquete listas)

Pilas y Colas. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Estructura de datos y Programación

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Programación TADs Lineales Lista Pila Cola

Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS

En las preguntas 1-30 indique la respuesta correcta. e= ninguna de las anteriores

Solucionado!!! La Torre de Hanói (Sin recursividad)

Segundo Parcial de Programación 2 7 de junio de 2017

Estructura de datos y algoritmos. Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES

Bloque II. Elementos del lenguaje de programación Java

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez

TEMA 2 Estructuras de datos lineales

1. Una pila funciona según el método LIFO (Last In First Out ). Se define la clase Pila de la siguiente forma:

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas. Guillermo Román Díez

4. Pilas ESTRUCTURAS DE DATOS 1

Biblioteca de templates. template <typename T> void eliminar(t arr[], int& len, int pos);

Listas enlazadas. Programación de Sistemas

Tema 03: TAD Cola. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 7.- Fundamentos de la Programación Orientada a Objetos

UNIDAD 9. DATOS COMPLEJOS PILAS

ELO320 Estructuras de Datos y Algoritmos. Stacks y Colas. Tomás Arredondo Vidal

Transcripción:

CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS 1

TEMAS A VER Listas simples genéricas Pilas Colas 2

LISTA SIMPLE GENÉRICA Una lista simple genérica nos permite crear listas de diferentes objetos: enteros, char, alumnos, productos, etc. Codificaremos una serie de métodos para administrar listas simples genéricas. La idea es abstraer el concepto de lista, sus atributos y operaciones, y poder generar una lista para diferentes objetos. 3

LISTA SIMPLE GENÉRICA DEFINICIÓN public class Lista { class Nodo { private Object dato; private Nodo sig; public Nodo(Object dato) { this.dato = dato; this.sig = null; Nombre de la Clase Clase Nodo que define el nodo de la lista, observar que está dentro de la clase LISTA! Variables privadas que definen la lista private Nodo pri; private Nodo actual; private int cantidad; public Lista () { this.pri = null; this.actual = null; this.cantidad = 0; Constructor de la Clase Lista 4

CLASE NODO DEFINICIÓN class Nodo { private Object dato; private Nodo sig; public Nodo(Object dato) { this.dato = dato; this.sig = null; public void dato(object objeto) { this.dato = objeto; public void sig(nodo nod) { this.sig = nod; public Object dato() { return this.dato; Clase Nodo que define el nodo de la lista, observar que está dentro de la clase LISTA! Permiten manejar los datos internos al nodo Accessors public Nodo sig() { return this.sig; Observar estos dos métodos 5

LISTA SIMPLE GENÉRICA INSERTAR public void insertar(object elemento) { Nodo nuevo = new Nodo(elemento); nuevo.sig(this.pri); this.pri = nuevo; this.cantidad = this.cantidad + 1; Inserta un elemento por adelante Método de la clase Nodo 6

LISTA GENÉRICA - OPERACIONES public Object elementoactual () { return (this.actual.dato()); public void iniciarrecorrido() { this.actual = this.pri; Devuelve el elemento actual de la lista. La lista debe tener elementos public void siguiente() { this.actual = this.actual.sig(); public boolean lleguefinal() { return (this.actual == null); public int cantidadelementos() { return this.cantidad; 7

LISTA SIMPLE - GENÉRICA- USO public class Programa { public static void main() { Lista lg = new Lista(); lg.insertar (10); lg.insertar (20); lg.insertar (30); lg.insertar (15); lg.insertar (115); lg.iniciarrecorrido(); System.out.println ("Elementos de la lista lg: "); while (!lg.lleguefinal()){ System.out.println ((int) lg.elementoactual()); lg.siguiente(); System.out.println("Total de elementos:" + lg.cantidadelementos()); Insertar los números 10, 20,30,15 y 115 en una lista de enteros y luego informar los valores por pantalla Se debe realizar el Casting correspondiente para tratarlo como la clase de elemento que es 8

PILAS Cúal es la idea de una pila de elementos? Tope Nuevo Celular 9

PILA CONCEPTO El tipo de Dato PILA (stack) es una estructura de datos que organiza los datos de la siguiente manera: A partir de una dirección de memoria, los datos se almacenan sucesivamente como si fueran una colección ordenada de elementos (cartas, platos, libros, camisas, números, etc). El orden está asociado al orden de llegada a la estructura. 10

PILA - CARACTERÍSTICAS Todos los elementos son del mismo tipo Perminte cambiar su tamaño durante la ejecución Homogénea Dinámica LIFO TOPE El último elemento en entrar es el primero en salir Siempre se tiene acceso al elemento que está al tope de la pila 11

PILA - FUNCIONAMIENTO Trabajaremos con el TAD PILA de Enteros Cómo funciona el poner (Agregar) un elemento de la estructura? Cómo funciona el Sacar un elemento de la estructura? 7 12 Dónde se Agrega un dato? Pila de Enteros 40 23 De dónde se saca un dato? 12

PILA GENÉRICA Cómo podemos implementar un pila de cualquier tipo de objeto? Qué estructura de datos conocemos para poder simular el comportamiento de una pila cuando no conocemos la cantidad de elementos? 13

PILA OPERACIONES Crear una pila. Agregar un elemento. Sacar un elemento. Poder saber cual es el elemento que está al tope de la pila. Cantidad de elementos de la pila. Saber si una pila está vacía. 14

PENSANDO LA CLASE PILA GENERÉRICA Tope de la Pila dato sig Pri Cantidad: 4 $2 $0,50 $1 $2 null 15

CLASE PILA GENERICA Pri Cantidad Es un Nodo con un dato y un siguiente Es un entero class Nodo { Object dato; Nodo sig; private Nodo pri; 16

PILA OPERACIONES public class Pila { class Nodo { private Object dato; private Nodo sig; public Nodo(Object dato) { this.dato = dato; this.sig = null; // Agregar los accessors que faltan de la Clase Nodo private Nodo pri; private int cantidad; public Pila () { this.pri = null; this.cantidad = 0; 17

PILA OPERACIÓN PUSH public void push(object x) { Nodo nuevo = new Nodo(x); nuevo.sig(this.pri); this.pri = nuevo; this.cantidad = this.cantidad +1; 18

PILA OPERACIÓN POP public Object pop () { Object elemento = this.pri.dato(); this.pri = this.pri.sig(); this.cantidad = this.cantidad -1; return elemento; 19

PILA OPERACIONES public boolean esvacia () { return (this.pri == null); public int cantidadelementos() { return this.cantidad; public object top() { return this.pri.dato(); 20

EJEMPLO USO DE PILA Enunciado: Realice un programa que lea números enteros hasta que viene el número 999. Una vez que la lectura ha finalizado se debe imprimir los números leídos en orden inverso. Ejemplo Si se lee 25 6 89 23 999 Se debería imprimir 23 89 6 25 21

EJEMPLO USO DE PILA public class ProgramaPila { public static void main () { Pila p = new Pila(); Scanner in = new Scanner(System.in); System.out.println( Ingrese una edad ); int edad = in.nextint(); while (edad <> 999) { p.push(edad); System.out.println( Ingrese una edad ); edad = in.nextint(); while (!= p.esvacia() ) { edad = (int) p.pop(); System.out.println(edad); 22

CLASE COLA 23

CLASE COLA El tipo de Dato COLA (queue) es una estructura de datos que organiza los datos de la siguiente manera: A partir de una dirección de memoria, los datos se almacenan sucesivamente como si fueran una colección ordenada de elementos (cartas, clientes frente a una ventanilla, libros en un estante, mensajes a una casilla de correo, etc), y En cualquier momento se puede recuperar el objeto que se encuentra primero en la estructura (es decir, el primero que fue guardado). 24

CARACTERÍSTICAS DE LA CLASE COLA Homogénea: ya que almacena elementos del mismo tipo. Dinámica: ya que permite agregar y sacar elementos durante la ejecución del programa. Acceso FIFO: (First In First Out): los elementos se recuperan en orden inverso al que fueron almacenados. En cualquier momento se puede recuperar el elemento que se encuentra en el frente de la cola (es decir, el primero que fue guardado). Son muy pocos los lenguajes de programación que cuentan con una estructura de este tipo como tipo estándar. En particular, Pascal no dispone del tipo de datos cola. 25

OPERACIONES DE LA CLASE COLA Crear una cola. Agregar un elemento a la estructura. Sacar un elemento de la estructura. Poder saber cual es el elemento que está en el frente de la cola. Poder saber cual es el elemento que está en el fondo de la cola. Cantidad de elementos de la cola. Saber si una cola está vacía. 26

FUNCIONAMIENTO DE LA COLA Trabajaremos con el TAD COLA de Enteros Por qué conviene definir el TAD Cola de enteros? Cómo funciona el poner (Agregar) un elemento de la estructura? Cómo funciona el Sacar un elemento de la estructura? 23 7-4 100 48 Cola de Enteros 27

OPERACIONES Crear una cola: Cola() Agregar un elemento a la estructura: push Sacar un elemento de la estructura: pop Poder saber cual es el elemento que está en el frente de la cola top Poder saber cual es el elemento que está en el fondo de la cola: bottom Cantidad de elementos de la cola: length Saber si una cola está vacía: empty IMPLEMENTAR la clase COLA Algunas ideas pueden ver desde el siguiente enlace COLA http://www.javaya.com.ar/detalleconcepto.php?codigo=117&inicio=40 28

ATRIBUTOS DE LA CLASE COLA public class Cola { class Nodo { Object dato; Nodo sig; // Agregar los accessors Clase Cola pri ult cantidadelementos private Nodo pri; private Nodo ult; private int cantidadelementos; public Cola () { this.pri = null; this.ult = null; this.cantidadelementos = 0; 29