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

Documentos relacionados
Programación de sistemas Pilas y Colas

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

Programación de sistemas

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

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

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

Programación TADs Lineales Lista Pila Cola

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

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

Tema 5. Estructura de datos Pila

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

4. Pilas ESTRUCTURAS DE DATOS 1

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

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

Estructuras de datos en memoria principal

Colas. Carlos Delgado Kloos Dep. Ingeniería Telemática Univ. Carlos III de Madrid. Java: Colas / 1

Estructuras de datos en memoria principal

(1) Recordemos qué es una pila...

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

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

Implementaciones de pilas, colas y afines. Memoria dinámica.

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

Unidad III: Estructuras lineales

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

Universidad Autónoma de Madrid Escuela Politécnica Superior

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

Ejercicios resueltos de programación

Profesor: José Miguel Rubio L.

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

UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES. 1. Pilas (Stacks)

Tema 6- Estructuras de Datos: Jerarquía de. Tema 6- Estructuras de Datos: Jerarquía de una EDA

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

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

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Colas deprioridad y heaps

12. COLAS Introducción Fundamentos

LISTAS, PILAS Y COLAS

Formatos para prácticas de laboratorio

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C

TAD Lineales: Pila, Cola y Lista

Tema 4- Representación Enlazada

Estructuras Dinámicas de datos.

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

Hoja de ejercicios del Tema 9

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

Uno de los conceptos más útiles en ciencias de la computación es la pila.

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

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

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)

11. PILAS Introducción Fundamentos

11. PILAS Introducción Fundamentos

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS

Federico Peinado

Estructura de Datos. Pilas Colas. Primer Semestre, Indice. TDA: Pilas TDA: Colas Colas de Prioridad Anillos BiColas BiColas Circulares

Elaboro: Ing Jessica Verònica Munive Flores BLOQUE II FASE 5 PROGRAMACIÓN DE PÁGINAS WEB

Estructuras de Datos Avanzadas Contenido del Tema

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

Diseño de Pilas y Colas

TEMA 2 Introducción a los TADs. Los tipos lineales

Estructura de datos Colas

Listas, Pilas, Colas y Punteros. Semana 3

Partes de un Tipo Abstracto de Datos. Introducción a la Computación (Matemática) TAD Fecha

Tema 2 Tipos abstractos de datos. 2.3 Cola de números enteros.

Capítulo. Listas, pilas y colas en C++ Contenido. Introducción

PILAS Fundamentos

Pilas y Colas. Capítulo 3

Grados Ing. Inf. y Mat. Inf. Noviembre 2011 Algoritmos y Estructura de Datos Página 1 de 6

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

Tema 3. Estructura de datos lineales. J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.

EDA. Tema 8 Colas de Prioridad: Heaps

Programación de sistemas

2. Con una lista ordenada, aunque la localización y eliminación es rápida el problema es en la inserción de datos pues puede ser del orden de O(n).

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

Programación de sistemas

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

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

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

Estructuras de datos lineales

12. LISTAS Introducción Listas con punto de interés

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Leonardo DaVinci. Piccasso La Tempestad. Mona Lisa

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Colecciones de Java LSUB. 30 de enero de 2013 GSYC

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

3.3. Pilas 3.3. PILAS 3

3.3. PILAS 1. stack(const queue &original); /* Pre: cierto */ /* Post: Construye una pila que es una copia de "original". */

1. El Tipo Abstracto de Datos.

Concurrencia Monitores. Guillermo Román Díez

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

PROGRAMACIÓN GENÉRICA

Ejercicio 1 (proyecto prlistas, paquete listas)

Estructuras de Datos Lineales y Arborescentes

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Un hombre caminaba por el bosque cuando vió una zorra lisiada. " Cómo hará para alimentarse?", pensó.

2. ESTRUCTURAS BÁSICAS

Tema 5.- Recursividad

SISTEMAS OPERATIVOS: PROCESOS. Planificación de procesos

Tema 4.- Pilas y Colas

Arquitecturas cliente/servidor

Práctica 2. TAD pila

Transcripción:

Algoritmos y Estructuras de Datos Pilas LIFO y Colas FIFO Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 1/12

Motivación Pregunta qué es una pila? qué es una cola? Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 2/12

Motivación Pregunta qué es una pila? qué es una cola? Pregunta qué significa LIFO? y FIFO? Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 2/12

Motivación Pregunta qué es una pila? qué es una cola? Pregunta qué significa LIFO? y FIFO? Las pilas y las colas son TADs fundamentales con innumerables aplicaciones Se usan en multitud de aplicaciones Pila de llamadas a métodos Gestión del historial de acciones / navegación Sistemas Operativos (round robin)... Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 2/12

Qué es un LIFO? LIFO Last In First Out Una Pila, LIFO o Stack es un TAD contenedor que consiste en una secuencia lineal de elementos donde: El último elemento apilado (push) es el primer elemento en ser desapilado(pop) No existe operación de búsqueda No tiene ĺımite de tamaño (teórico... ) Os suena Stack Overflow? Veremos dos implementaciones usando Listas de posiciones Arrays Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 3/12

Interfaz LIFO<E> Interrogadores: size, isempty Inserción: push Borrado: pop Acceso: top Conversión: toarray, topositionlist Siguiendo LIFO, el primer elemento del array será el primer elemento desapilado Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 4/12

Interfaz LIFO<E> Ejercicio Interrogadores: size, isempty Inserción: push Borrado: pop Acceso: top Conversión: toarray, topositionlist Siguiendo LIFO, el primer elemento del array será el primer elemento desapilado Implementar el método boolean balance(string s) Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 4/12

Clase LIFOList<E> Implementa una pila usando lista de posiciones Sólo tiene la lista como atributo: El tamaño de la pila es el de la lista Apilar (push) consiste en insertar al principio Desapilar (pop) consiste en borrar el primer elemento La consulta se realiza mediante la operación top Tiene 4 constructores: (1) Vacío, (2) un array, (3) una lista posiciones o (4) una pila pop y top lanzan EmptyStackException si la pila está vacía push no lanza excepción tostring y toarray usan los método de la lista topositionlist devuelve una copia de la lista atributo Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 5/12

Clase LIFOArray<E> Implementa una pila usando un array Establece un tamaño inicial para el array. Cuando se llena crea uno mayor copiando los elementos (shallow copy) Tiene 3 atributos: arr, size, defaultcapacity El tamaño de la pila es el número de elementos apilados (size) Apilar (push) consiste en añadir después del último elemento Desapilar (pop) consiste en borrar el último Tiene 4 constructores: (1) Vacío, (2) un valor para la capacidad, (3) un array, (4) una lista de posiciones, (5) una pila pop y top lanzan EmptyStackException si la pila está vacía push comprueba si estamos al máximo de la capacidad y amplia si es necesario tostring escribe el array en orden inverso toarray y topositionlist devuelven los elementos uno a uno insertándolos en el array o en la lista Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 6/12

Qué es un FIFO? FIFO First In First Out Es un TAD contenedor que consiste en una secuencia lineal de elementos donde el primer elemento encolado (enqueue) es el primer elemento en ser desencolado (dequeue) No existe una operación de búsqueda No tiene ĺımite de tamaño (teórico) Presenta las mismas limitaciones que la lista Veremos dos implementaciones usando Listas de posiciones Arrays Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 7/12

Interfaz FIFO<E> Interrogadores: size, isempty Inserción: enqueue Borrado: dequeue Acceso: first Conversión: toarray, topositionlist El primer elemento será el primer elemento desencolado Un ejemplo típico es la gestión de CPU mediante RoundRobin Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 8/12

Interfaz FIFO<E> Interrogadores: size, isempty Inserción: enqueue Borrado: dequeue Acceso: first Conversión: toarray, topositionlist El primer elemento será el primer elemento desencolado Un ejemplo típico es la gestión de CPU mediante RoundRobin while (! fifo. isempy ()) { Process p = fifo. first (); fifo. dequeue (); int status = p. run (20) ; if ( status < 0) { p. suspend (); fifo. enqueue (p); } } Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 8/12

Clase FIFOList<E> Implementa una cola usando lista de posiciones Sólo tiene la lista como atributo: El tamaño de la pila es el de la lista Encolar (enqueue) consiste en insertar al final Desencolar (dequeue) consiste en borrar el primer elemento Tiene 4 constructores: (1) Vacío, (2) un array, (3) una lista posiciones o (4) una cola first y dequeue lanzan EmptyFIFOException si la pila está vacía enqueue no lanza excepción tostring y toarray usan los método de la lista topositionlist devuelve una copia de la lista atributo Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 9/12

Clase FIFOArray<E> Implementa una cola usando un array de forma circular Establece un tamaño inicial para el array. Cuando se llena crea uno mayor copiando los elementos (shallow copy) Tiene 5 atributos: arr, size, first, last y defaultcapacity El tamaño de la cola es el número de elementos apilados Encolar (push) consiste en insertar al principio Desapilar (pop) consiste en borrar el primer elemento Tiene 5 constructores: (1) Vacío, (2) un valor para la capacidad, (3) un array, (4) una lista de posiciones, (5) una cola pop y top lanzan EmptyFIFOException si la pila está vacía push comprueba si estamos al máximo de la capacidad y amplia si es necesario tostring escribe el array en orden inverso toarray y topositionlist devuelven los elementos uno a uno insertándolos en el vector o en la lista Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 10/12

Implementación Array Circular Pregunta por qué usamos un array de forma circular para las colas y no lo hemos hecho así con las pilas? Pregunta La cola está vacía cuando first y last son iguales Se van insertando elementos mediante last El incremento de first y last se realiza de forma circular last = ( last + 1) % arr. length ; La cola se llena cuando first y last vuelven a ser iguales En este caso tenemos que ampliar el tamaño del array puede last ser menor que first? Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 11/12

Ampliación del tamaño del array Se puede producir cuando se ejecuta enqueue La ampliación el tamaño de la pila es igual que el tamaño del array Por decisión de diseño doblamos el tamaño del array Se crea un array, se copian los elementos del antiguo en la parte inicial del array La copia hay que hacerla en el orden de encolado first pasa a ser el primer elemento del array last pasa a ser el primero de los huecos Se inserta el elemento nuevo en el primer hueco Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 12/12