Tema 4.- Pilas y Colas



Documentos relacionados
Listas, Pilas, Colas y Punteros. Semana 3

Parte II: Estructuras de datos y algoritmos

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

COLAS. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería:

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tema 5.- Recursividad

Pilas y Colas. Capítulo 3

Organización de Computadoras

Son objetos cuya función es el tratamiento de varios registros exclusivamente durante la ejecución de un programa.

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

Introducción a la programación orientada a objetos

1. Se debe plantear sobre el papel la solución del ejercicio.

GENERACIÓN DE CÓDIGO

Aplicaciones seguras con ClaseSeguridad

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Comencemos a programar con. Entrega 10. Estructuras de Control II

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Modulo 1 El lenguaje Java

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

SIIGO Pyme. Templates. Cartilla I

GUÍA RÁPIDA FAMILIAS COLEGIO Mª INMACULADA XÀBIA

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Word. Qué es Office? Cuando se abre el programa, se muestra una pantalla como la siguiente. Manual Microsoft Office MS Word

6.1. Conoce la papelera

Sistema para el control y tramitación de documentos SITA MSc. María de la Caridad Robledo Gómez y Ernesto García Fernández.

Capítulo 9. Archivos de sintaxis

Lenguaje de Programación: Go

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Herramientas computacionales para la matemática MATLAB: Funciones definidas por el usuario (parte II)

Instrumentación Virtual con LabVIEW

INSTITUTO TECNOLÓGICO DE NUEVO LAREDO ING. EN SISTEMAS COMPUTACIONALES

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

- Bases de Datos - - Diseño Físico - Luis D. García

Estructuras de Datos Abstractas en Lenguaje Java

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)

Introducción a la calidad de código

Objetivo: Informar al alumno los elementos que componen el entorno del programa Microsoft Office PowerPoint.

HIPERVÍNCULOS. Es posible asignar un vínculo a un texto, a una imagen, o a parte de una imagen

Programación estructurada

El problema de los Filósofos

Manual de uso. Manual de uso - citanet 1

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Acciones pueden haber en Flash más de 1000 por lo tanto no se trata de aprenderlas de memoria sino de utilizarlas cuando nos interese.

PS.Vending Almacén Pocket PC

Introducción a la Programación en MATLAB

Tema: Arreglos de Objetos en C++.

Enlaces relacionados:

Versatils. Apéndice. ODBC Orígenes de datos. ODBC Orígenes de datos.

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Conectar a unidad de red

Tema 3: Listas Enlazadas

VISUAL BASIC Diseño de Formularios MDI y Menús - Proyectos Aplica

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente:

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos.

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Guía N 1: Fundamentos básicos(i)

2) Tenemos un sistema informático con una sola CPU que está gestionada mediante una cola multinivel con realimentación.

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

POWER POINT. Iniciar PowerPoint

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Introducción a la Programación Ingenieria en Informática Junio 2008

Access Control. Manual de Usuario

Horde Manual de usuario

Programación Orientada a Objetos con Java

3.1 Introducción a VHDL

GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Elementos léxicos del lenguaje de programación Java

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

Práctica 7. TAD aplicación

Programación Avanzada para Sistemas de Telecomunicación Arrays

MANUAL DE CREACIÓN DE CARPETAS PARA ACCESO POR FTP DE CLIENTES EN UN NAS

Gestor de Expedientes 28/09/2010

Examen final de CL 11 de Enero de 2012 Fecha de publicación de notas: Fecha de revisión:

GENERACIÓN DE TRANSFERENCIAS

Correo Electrónico: Webmail: Horde 3.1.1

PROCEDIMIENTOS DE TÍTULOS. Para solicitar los títulos al finalizar determinadas enseñanzas es preciso seguir un proceso en la aplicación Plumier XXI.

MANUAL PARA RESPALDAR Y RESTAURAR UNA BASE DE DATOS EN EL SAACG.NET INDETEC MANUAL PARA RESPALDAR Y RESTAURAR UNA BASE DE DATOS EN EL SAACG.

Transcripción:

Apuntes elaborados por: Eduardo Quevedo, Raquel López y Aaron Asencio Revisado por: Javier Miranda el???? Tema 4.- Pilas y Colas Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de programación. Estas estructuras pueden implementarse mediante arrays o mediante listas enlazadas. Pilas: Las pilas son estructuras de datos que tienes dos operaciones básicas: push (para insertar un elemento) y pop (para extraer un elemento). Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse. Por esta razón también se conocen como estructuras de datos LIFO (del inglés Last In First Out). Una posible implementación mediante listas enlazadas sería insertando y extrayendo siempre por el principio de la lista. Gracias a las pilas es posible el uso de la recursividad (lo veremos en detalle en el tema siguiente). La variable que llama al mismo procedimiento en el q está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacandolas, esto es posible a la implementación de pilas. Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Por ejemplo, la gestión de ventanas en Windows (cuando cerramos una ventana siempre recuperamos la que teníamos detrás). Otro ejemplo es la evaluación general de cualquier expresión matemática para evitar tener que calcular el número de variables temporales que hacen falta. Por ejemplo: 3 + 4 * (8 2 * 5) 5-2 -10 8 8-2 4 4 4-8 3 3 3 3-5 1

Colas: Las colas también son llamadas FIFO (First In First Out), que quiere decir el primero que entra es el primero que sale. Colas simples: Se inserta por un sitio y se saca por otro, en el caso de la cola simple se inserta por el final y se saca por el principio. Para gestionar este tipo de cola hay que recordar siempre cual es el siguiente elemento que se va a leer y cual es el último elemento que se ha introducido. Colas circulares: 910 973 175 137 En las colas circulares se considera que después del último elemento se accede de nuevo al primero. De esta forma se reutilizan las posiciones extraídas, el final de la cola es a su vez el principio, creándose un circuito cerrado. 5 5 5 4 4 4 4 3 3 3 3 2 2 2 2 1 1 8 Lo que se ha hecho es insertar (5), sacar (1), e insertar (8). Se sabrá que una tabla está llena cuando rear y front estén en una posición de diferencia. El teclado de ordenador se comporta exactamente como una cola circular. Para implementar las colas circulares mediante listas enlazadas se pone en el tipo T_Lista los punteros front y rear. 2

Colas con prioridad: Las colas con prioridad se implementan mediante listas o arrays ordenados. No nos interesa en este caso que salgan en el orden de entrada sino con una prioridad que le asignemos. Puede darse el caso que existan varios elementos con la misma prioridad, en este caso saldrá primero aquel que primero llego (FIFO). Paquete Pila: Finalmente implementamos el paquete pila tanto para un array como para listas. Esta implementación será realmente útil para el tema siguiente, recursividad. Array: ADS generic type TDato is private; package Pila_generica is private type TPila (Maximo : Positive) is private; Llena, Vacia, FueraDeRango : exception; procedure Push ( Pila : in out TPila; Dato : in TDato ); procedure Pop ( Pila : in out TPila; Dato: out TDato ); function PilaVacia (Pila : in TPila) return Boolean; function PilaLlena (Pila : in TPila) return Boolean; function Valor ( Pila : in TPila; Index : Positive ) return TDato; type TVector is array (Positive range <>) of TDato; type TPila (Maximo : Positive) is record Contenido : TVector (1.. Maximo); Cima : Natural := 0; end record; ADB with Text_IO; with Unchecked_Deallocation; use Text_IO; package body Pila_Generica_Dinamica is procedure Free is new Unchecked_Deallocation (TNodo,TPuntero); 3

function Vacia (Pila : in TPila) return Boolean is return Pila.Cab = null; procedure Push (Pila: in out TPila; Dato: in TDato) is NuevoNodo : TPuntero := new TNodo; NuevoNodo.Dato := Dato; NuevoNodo.Sig := Pila.Cab; Pila.Cab := NuevoNodo; procedure Pop ( Pila : in out TPila; Dato : out TDato) is if Pila.Vacia = True then raise Vacia; Dato := P.Dato; Free(P); if Pila.Cab = null then else procedure Reset (Pila : in out TPila) is while Pila.Cab /= null loop Free (P); end loop; 4

Listas: ADS generic type TDato is private; package Pila_Generica_Dinamica is private type TPila is private; Vacia : Exception; function Vacia (Pila : in TPila) return Boolean; procedure Reset (Pila : in out TPila); procedure Push (Pila : in out TPila; Dato : in TDato); procedure Pop (Pila : in out TPila; Dato : out TDato); Type TNodo; Type TPuntero is access TNodo; Type TNodo is record Dato : TDato; Sig : TPuntero; end record; Type TPila is record Cab : TPuntero; Vacia : Boolean := True; end record; ADB with Text_IO; with Unchecked_Deallocation; use Text_IO; package body Pila_Generica_Dinamica is procedure Free is new Unchecked_Deallocation (TNodo,TPuntero); function Vacia (Pila : in TPila) return Boolean is return Pila.Cab = null; 5

procedure Push (Pila: in out TPila; Dato: in TDato) is NuevoNodo : TPuntero := new TNodo; NuevoNodo.Dato := Dato; NuevoNodo.Sig := Pila.Cab; Pila.Cab := NuevoNodo; procedure Pop ( Pila : in out TPila; Dato : out TDato) is if Pila.Vacia = True then raise Vacia; Dato := P.Dato; Free(P); if Pila.Cab = null then else procedure Reset (Pila : in out TPila) is while Pila.Cab /= null loop Free (P); end loop; 6