TEMA 7. EL TDA PILA. 7.1. Definición



Documentos relacionados
6. El TDA Lista Implementación con listas enlazadas. es de tipo genérico T. Pueden existir elementos repetidos (a diferencia de los conjuntos).

Listas, Pilas, Colas y Punteros. Semana 3

Organización de Computadoras

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

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

Pilas y Colas. Capítulo 3

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

TAD Lineales: Pila, Cola y Lista

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

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 y de la Información. Pilas y expresiones aritméticas

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

árbol como un conjunto de nodos y líneas

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

Estructuras de datos: Árboles binarios de

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

ARREGLOS DEFINICION GENERAL DE ARREGLO

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

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.) Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...

Ampliación de Estructuras de Datos

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas:

axtpv - Manual del usuario axtpv Profesional

7. Manejo de Archivos en C.

GENERACIÓN DE CÓDIGO

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

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

Tema 4.- Pilas y Colas

4º ESO 1. ECUAC. 2º GRADO Y UNA INCÓGNITA

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas

Tema 8 Procesos. * Definición informal: un proceso es un programa en ejecución

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

Estructura de Datos. TDA: Listas. Primer Semestre, Indice. Tipos de estructura de datos lineales

Algorítmica y Lenguajes de Programación. Ordenación (i)

Gobierno del Estado de México

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

Traductores Push Down para Gramáticas LL

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

PESTAÑA DATOS - TABLAS EN EXCEL

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11

Examen de Fundamentos de sistemas distribuidos

Examen de Fundamentos de sistemas operativos

Árboles AVL. Laboratorio de Programación II

Instituto Politécnico Nacional

Practicas de Programación Estructurada. Clave: 12125

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

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos Thursday, April 30, 15

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

Text Mining: Distancia de Levenshtein

Cambio de representaciones para variedades lineales.

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

CAPÍTULO 5 ESTRUCTURAS DE DATOS

Prof. Dr. Paul Bustamante

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Introducción a la Computación TFA

Hilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR: Estructuras CONTENIDOS

Tema 2. Software. Informática (1º Ingeniería Civil)

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso Notas. Ejemplo. La herramienta make. 1 Diseño modular.

ESTRUCTURA DE DATOS: ARREGLOS

Análisis amortizado El plan:

Bases de Datos Indexación y Hashing 1. Indexación. Jorge Pérez Rojas Universidad de Talca, II Semestre 2006

Pseudolenguaje. (1 byte) (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio n 1 [MIN(C)..

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

ÁRBOLES BINARIOS GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

Estructuras de Almacenamiento RAID RAID. Nivel FísicoF. Índice. Requisitos Almacenamiento. Nivel Lógico Modelo Entidad-Relación y Modelo Relacional

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

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

Segundo parcial de Sistemas Operativos. 24/6/2008. Ejercicios. 5 puntos. Duración 2h.

Arboles Binarios de Búsqueda


VECTORES EN EL ESPACIO. 1. Determina el valor de t para que los vectores de coordenadas sean linealmente dependientes.

Tema 2. Organizaciones de ficheros y estructuras de acceso

Instalación del programa PSPP y obtención de una distribución de frecuencias.

La Lección de Hoy es Distancia entre dos puntos. El cuál es la expectativa para el aprendizaje del estudiante CGT.5.G.1

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Tema 11 Bases de datos. Fundamentos de Informática

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Práctica 2: Simón dice

APLICACIONES INFORMÁTICAS de BASE de DATOS

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

Modulo 1 El lenguaje Java

Capítulo. Cálculos con matrices

Función de un disco duro 2009

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

Práctica 7. TAD aplicación

GVisualPDA Módulo de Almacén

UNIDAD DE APRENDIZAJE IV

3. COLA DE PRIORIDAD DEFINICION (I)

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Tema: INTÉRPRETE ENSAMPOCO/3

Introducción al tipo de dato ARRAY

SQL (Structured Query Language)

Control de presencia para terminal por huella dactilar

Transcripción:

TEM 7. EL TD PIL 7.1. Definición 7.2. Operaciones del TD PIL 7.3. Implementaciones más usuales: vectores y listas enlazadas 7.4. Utilidades de las Pilas ibliografía Weiss Cairó y Guardati ho, Hopcroft y Ullman 7.1. Definición Las pilas son estructuras que permiten almacenar elementos, con la particularidad de que todas las inserciones y borrados se hacen por el punto denominado tope de la pila. Los tipos de dato PIL son equivalentes a las pilas de platos, discos, etc. que vemos a diario. La memoria de los programas, dentro de un ordenador, se almacenan siguiendo la forma de una PIL. C

Las tres operaciones elementales son: push, pop y tope, son muy sencillas. No obstante, son muy útiles en programación: Permiten simplificar algoritmos complejos. Permiten accesos muy rápidos (los algoritmos que los usan no pierden tiempo en los accesos). C + Pop(P,X) X = C y + Push(P, D ) D D + Tope(P,X) X = D y Tope D 6.2. Operaciones del TD Pila Crear_pila (P: Pila, ok: lógico) {P: parámetro resultado; genera una pila vacía; ok: parámetro resultado, cierto/falso si todo fue o no bien} orrar_pila (P: Pila, ok: lógico) {P: parámetro resultado; borra todos los elementos de la pila; ok: parámetro resultado, cierto/falso si todo fue o no bien} Vacía? (P: Pila, resp: lógico) {P: parámetro dato; resp: parámetro resultado, cierto/falso si la pila está o no vacía} Llena? (P: Pila, resp: lógico) {P: parámetro dato; resp: parámetro resultado, cierto/falso si la pila está o no llena}

Push (P: Pila, x: ELEMENTO, resp: lógico) {P: parámetro dato-resultado; se modifica el tope de la pila. x: parámetro dato, dato a introducir en el tope de la pila, resp: parámetro resultado, cierto/falso si la operación pudo o no realizarse} Pop (P: Pila, x: ELEMENTO, resp: lógico) {P: parámetro dato-resultado; se modifica el tope de la pila. x: parámetro resultado, dato que ocupa el tope de la pila, resp: parámetro resultado, cierto/falso si la operación pudo o no realizarse} Tope (P: Pila, x: ELEMENTO, resp: lógico) {P: parámetro dato; no se modifica el tope de la pila. x: parámetro resultado, dato que ocupa el tope de la pila, resp: parámetro resultado, cierto/falso si la operación pudo o no realizarse} 7.3. Implementaciones más usuales: vectores y listas enlazadas 7.3.1. Implementación con vectores #define MÁXIMO 256 typedef int LOGICO; typedef char ELEMENTO; struct t_pila { int tope; ELEMENTO datos [MXIMO]; } typedef struct t_pila PIL;

Cabeceras en C de las operaciones del TD Pila LOGICO crear_pila (PIL *P) LOGICO borrar_pila (PIL *P) LOGICO vacía? (PIL P) LOGICO llena? (PIL P) LOGICO push (PIL *P, T x) LOGICO tope (PIL P, T *x) LOGICO pop (PIL *P, T *x) 7.3.2. Implementación con listas enlazadas ) TD Pila como TD Lista push(), top() y pop() se implementan en función de primero(), insertar(), eliminar(), anterior(), sgte(),... ) TD Pila directamente con listas enlazadas Es posible simplificar la representación anterior, ya que sólo interesa saber dónde está el primer elemento. {Declaración de tipos} ELEMENTO = T; POSICIÓN = puntero a NODO; NODO = registro de info: ELEMENTO; sgte: puntero a NODO; finregistro; PIL = registro de longitud: numérico; prim: puntero a NODO; finregistro;

{Nec: Una pila y un elemento. Prod.: Pone el elemento en el tope de la pila.} lgoritmo Push (P, x, resp) es P: Pila; {par. dato-resultado} x: ELEMENTO; {p. dato} resp: lógico; {p. resultado} tmp: posición; {variable local} Inicio llena? (P, resp); si resp = cierto entonces {La pila está llena. No se puede insertar} resp:= falso; Escribir "Pila llena"; sino obtener (tmp); tmp.info := x; tmp.sgte := P.prim; {puede ser nil} P.prim := tmp; P.longitud := P.longitud + 1; resp := cierto; finsi Fin {Nec: Una pila con, al menos, un elemento. Prod.: Saca el elemento del tope de la pila.} lgoritmo Pop (P, x, resp) es P: Pila; {p. dato-resultado} x: ELEMENTO; {p. resultado} resp: lógico; {p. resultado} tmp: posición; Inicio vacía? (P, resp); si resp = cierto entonces {La pila está vacía. No se puede sacar} resp := falso; Escribir "Pila vacía"; sino tmp := P.prim; P.prim := tmp.sgte; {que puede ser nil} P.longitud := P.longitud 1; x := tmp.info; liberar(tmp); resp := cierto; finsi Fin

{Nec: Una pila. Prod.: El elemento que ocupa el tope de la pila} lgoritmo Tope (P, x, resp) es P: Pila; {p. dato} x: ELEMENTO; {parámetro resultado} resp: lógico; {p. resultado} Inicio vacía? (P, resp); si resp = cierto entonces {La pila está vacía} resp := falso; Escribir "Pila vacía"; sino {Hay al menos un elemento} x := P.prim.info; resp:=cierto; finsi Fin