4. Pilas ESTRUCTURAS DE DATOS 1

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

Pilas. Uso (I) * 2 = * + Transformación de expresiones aritméticas de notación infija a postfija. Ejemplo:

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

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

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

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

Listas, Pilas y Colas

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

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

3. ESTRUCTURAS DE DATOS NO LINEALES

LISTAS DOBLES y multiples

1.2.4 Listas enlazadas

TAD. TAD Conjunto Análisis del TAD Conjunto Posibles implemantaciones A.E.D.

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros

Programación TADs Lineales Lista Pila Cola

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

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

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

Programación Introducción al Diseño de Tipos Abstractos de Datos

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

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

Unidades en PASCAL (Units)

B) Contestar Verdadero o Falso a las siguientes preguntas, justificando la respuesta:

Tema 5. Estructura de datos Pila

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

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

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 6: Tablas de dispersión (hashing)

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

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

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

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

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

Calidad del Software. Ejercicios Tema 4 Conceptos de pruebas

Tema 7: Árbol Binario

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

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

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

Concepto de Recursión. Características de algoritmos recursivos. Ejemplos

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

Estructuras de Datos Avanzadas Contenido del Tema

11. PILAS Introducción Fundamentos

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 5: Árboles. Prof. Montserrat Serrano Montero

Los Tipos Abstractos de Datos. Estructuras de Datos y Algoritmos 03/04

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

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Programación de sistemas Listas enlazadas

Práctica 1. TAD número racional

Tablas de Dispersión (Hashing Tables)

Programación de sistemas

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

Estructuras de datos: Pilas, Colas, Listas

324 MR Versión 1 1 Prueba Integral 1/6 Lapso UNIVERSIDAD NACIONAL ABIERTA Semana 12 VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA

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

Tema 4.- Pilas y Colas

PILAS Fundamentos

PROGRAMACIÓN GENÉRICA

TAD Lineales: Pila, Cola y Lista

Generación de números aleatorios con distribución uniforme

Unidad III: Estructuras lineales

Manual de turbo pascal

Diseño de Pilas y Colas

Segundo parcial de Programación 2

Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica

TAD Lineales: Pila, Cola y Lista

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

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

UNIDAD 9. DATOS COMPLEJOS PILAS

11. PILAS Introducción Fundamentos

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

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

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 7: Grafos. Prof. Montserrat Serrano Montero

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

ARREGLOS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Estructuras de datos: Pilas, Colas, Listas

Complejidad de algoritmos recursivos

Tema 3: Listas Enlazadas

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

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

TAD: Pila. TALLER: TAD Pila

LISTAS. Prof. Ing. M.Sc. Fulbia Torres

Parte II: Estructuras de datos y algoritmos

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el???

Programación de sistemas Pilas y Colas

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

Algoritmos y Estructuras de Datos II

Transcripción:

4. Pilas Una Pila es una colección de elementos homogéneos dispuestos en orden tal que se recuperan en orden inverso a como se introdujeron. La extracción e inserción de elementos en la Pila se realiza por la parte superior El único elemento accesible es el último. LIFO (Last In, First Out) ESTRUCTURAS DE DATOS 1

4. Pilas Una pila viene parametrizada por el tipo de elemento que alberga. TipoElemento: parámetro genérico del TipoPila Qué operaciones definimos para el TAD Pila? Posibles operaciones serán: CrearVacia, Apilar, Desapilar, EsPilaVacia, Cima Especificación algebraica: ESTRUCTURAS DE DATOS 2

4. Pilas: Especificación ESPECIFICACION Pilas PARÁMETROS GENÉRICOS TipoElemento FIN PARÁMETROS GENÉRICOS TIPOS TipoPila OPERACIONES (* CONSTRUCTORAS GENERADORAS *) CrearPilaVacia: TipoPila Apilar: TipoElemento x TipoPila TipoPila (* OBSERVADORAS SELECTORAS *) PARCIAL Cima : TipoPila TipoElemento PARCIAL Desapilar : TipoPila TipoPila (* OBSERVADORAS NO SELECTORAS *) EsPilaVacia : TipoPila Booleano ESTRUCTURAS DE DATOS 3

4. Pilas: Especificación VARIABLES pila: TipoPila; e: TipoElemento; ECUACIONES DE DEFINITUD DEF(Cima(Apilar(e, pila)) DEF(Desapilar(Apilar(e, pila)) ECUACIONES (* OBSERVADORAS SELECTORAS *) Cima (Apilar(e, pila)) = e Desapilar(Apilar(e, pila)) = pila (* OBSERVADORAS NO SELECTORAS *) EsPilaVacia (CrearPilaVacia) = CIERTO EsPilaVacia (Apilar(e, pila)) = FALSO FIN ESPECIFICACIÓN ESTRUCTURAS DE DATOS 4

Implementación mediante estructuras estáticas. ESTRUCTURAS DE DATOS 5

Implementación mediante estructuras dinámicas. TYPE TipoPila = ^TipoNodo TipoNodo = RECORD info: TipoElemento; anterior: TipoPila; pila Elemento n... Elemento 2 Elemento 1 ESTRUCTURAS DE DATOS 6

(* OPERACIONES CONSTRUCTORAS GENERADORAS *) PROCEDURE CrearPilaVacia(VAR pila: TipoPila); {PRE: Cierto} {POST: La pila esta vacía o se destruye} PROCEDURE Apilar(elem: TipoElemento; VAR pila: TipoPila); {PRE: Hay espacio para almacenar elemento en la lista} {POST: "elemento" queda almacenado en la cima de la "pila"} {EXCEPCION: Si la pila esta llena no se inserta el elemento} (* OPERACIONES OBSERVADORAS SELECTORAS *) PROCEDURE Cima(VAR elem: TipoElemento; pila: TipoPila); {PRE: "lista" no está vacía} {POST: devuelve el elemento que contiene la cima de la "pila"} {EXCEPCION: Si la pila esta vacía no devuelve nada} ESTRUCTURAS DE DATOS 7

PROCEDURE Desapilar(VAR pila: TipoPila); {PRE: La pila no esta vacía} {POST: Elimina la cima de la pila} {EXCEPCIÓN: Pila Vacía } (* OPERACIONES OBSERVADORAS NO SELECTORAS *) FUNCTION EsPilaVacia(pila: TipoPila): Boolean; {PRE: Cierto} {POST: devuelve TRUE si "pila" esta vacía} (* OPERACIONES CONSTRUCTURAS NO GENERADORAS *) PROCEDURE Copiar(pila1: TipoPila; VAR pila2: TipoPila); {PRE: Queda memoria para almacenar pila2 } {POST: Devuelve en pila2 una copia de pila1 } {EXCEPCIÓN: Memoria Agotada } ESTRUCTURAS DE DATOS 8

PROCEDURE Destruir(VAR pila: TipoPila); {PRE: Cierto} {POST: Elimina los nodos de pila } IMPLEMENTATION {********************************************************} (* OPERACIONES CONSTRUCTORAS GENERADORAS *) PROCEDURE CrearPilaVacia(VAR pila: TipoPila); {O(1)} BEGIN pila := NIL ESTRUCTURAS DE DATOS 9

PROCEDURE Apilar(elem: TipoElemento; VAR pila: TipoPila); {O(1)} VAR BEGIN auxpnodo: TipoPila; new(auxpnodo); auxpnodo^.ant := pila; Asignar(auxPNodo^.info,elem); pila := auxpnodo; ESTRUCTURAS DE DATOS 10

(* OPERACIONES OBSERVADORAS SELECTORAS *) PROCEDURE Cima(VAR elem: TipoElemento; pila: TipoPila); {O(1)} BEGIN IF NOT EsPilaVacia(pila) THEN Asignar(elem,pila^.info) PROCEDURE Desapilar(VAR pila: TipoPila); {O(1)} VAR auxpnodo: TipoPila; BEGIN IF NOT EsPilaVacia(pila) THEN BEGIN auxpnodo := pila; pila := pila^.ant; dispose(auxpnodo) ESTRUCTURAS DE DATOS 11

(* OPERACIONES OBSERVADORAS NO SELECTORAS *) FUNCTION EsPilaVacia(pila: TipoPila): Boolean; {O(1)} BEGIN EsPilaVacia := (pila = NIL); ESTRUCTURAS DE DATOS 12

CrearCabecera(...) (* OPERACIONES CONSTRUCTORAS NO GENERADORAS *) PROCEDURE Copiar(pila1: TipoPila; VAR pila2: TipoPila); {O(n)} VAR BEGIN 4. Pilas: Implementación auxpnodo1, auxpnodo2, auxpnodopre2: TipoPila; IF NOT EsPilaVacia(pila1) THEN BEGIN auxpnodo1 := pila1; new(auxpnodo2); Asignar(auxPNodo2^.info,auxPNodo1^.info); auxpnodo2^.ant := NIL; pila2 := auxpnodo2; CrearNodo(...) ESTRUCTURAS DE DATOS 13

auxpnodo1 := auxpnodo1^.ant; {Avance en pila1} WHILE (auxpnodo1 <> NIL) DO BEGIN auxpnodopre2 := auxpnodo2; new(auxpnodo2); Asignar(auxPNodo2^.info,auxPNodo1^.info); CrearNodo(...) auxpnodo2^.ant := NIL; auxpnodopre2^.ant := auxpnodo2; auxpnodo1 := auxpnodo1^.ant END {WHILE} END {IF} Hace de extremo de la pila ESTRUCTURAS DE DATOS 14

PROCEDURE Destruir(VAR pila: TipoPila); { O(n) } BEGIN WHILE NOT EsPilaVacia(pila) DO Desapilar(pila); END. ESTRUCTURAS DE DATOS 15