Universidad Central II-35 Estructuras de Datos Profesor: Ing. Mauricio Rivera e-mail: mriverav@ice.go.cr Oficina: 2220-7665 Cel: 8899-4044 Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Evaluación del Curso Examen Parcial I 15 % Examen Parcial II 15 % Proyectos Programados 24 % Quices y tareas 16 % Examen Final 30 % 100% Total Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Programa del Curso Pilas Colas Punteros Listas Recursividad Árboles Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Pilas Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera ¿Qué es una Pila? A nivel lógico, una pila es un grupo ordenado de elementos homogéneos y por lo cual todos del mismo tipo. Por lo cual consiste en que la única manera de quitar un elemento de la pila es por el tope o cabeza de la pila misma. Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Pilas Es considerada la pila un grupo ordenados de elementos por el tiempo que conllevan en ella. Por este motivo el último elemento a ingresar será el primero también en salir. Osea también llamado LIFO. (Last In, First Out). Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Pilas Las operaciones básicas en una pila son: Inicializar Crear Añadir (Push) Borrar (Pop) Verificación de pila vacía Verificar Pila Llena Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Pilas Las pilas necesitan de sus elementos básicos para que sea una estructura dinámica, ya que cambia constantemente por la cabeza. Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Comienzo de una Pila Primero para comenzar a usar una pila debe estar Vacía por ende crear una pila vacía, una que no contenga elementos. Estas operaciones las comenzaremos llamando LimpiarPila, considerando también que debemos preguntar si ya hay un elemento que podamos sacar en la pila esto realizándolo con una operación booleana que llamaremos PilaVacia. Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Comienzo de una Pila Debemos de considerar también la operación PilaLlena. Con esto plasmamos una visión lógica de lo que queremos lograr, pero en un nivel oculto o encapsulado, ya que utilizaremos las operaciones de meter y sacar por los cuales entrarán los elementos a la pila. Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Paquete Pilas El paquete de pila se le conoce al tipo de datos abstracto pila y a sus funciones de acceso y Operaciones. Con esto se dará un conocimiento acerca de la implementación con las interfaces a utilizar para la creación de una pila. Realizado por: Ing. Mauricio Rivera
Paquete Pila: Operaciones LimpiarPila (Pila) Función: Inicializa pila a un estado vacío Entrada: Pila a inicializar Precondiciones: Ninguna Salida: Pila (inicializada) Postcondiciones: Pila esta vacía. PilaVacía (Pila): Devuelve un valor Booleano Función: Indica si pila esta vacía Entrada: Pila a ser probada Salida: Pila Vacía (indicativo booleano) Postcondiciones: Pila vacía = (pila esta vacía) Realizado por: Ing. Mauricio Rivera
Paquete pila: Operaciones PilaLlena (Pila): Devuelve un valor Booleano Función: Indica si pila esta llena Entrada: Pila a ser probada Precondiciones: Ninguna Salida: Pila Llena (indicativo booleano) Postcondiciones: Pila llena = (pila esta llena) Push (Pila, Nuevo elemento) Función: Añade un nuevo elemento a la cabeza de la pila Entrada: Pila , nuevo elemento Precondiciones:Pila no esta llena Salida: Pila (cambiada) Postcondiciones: Pila = (pila original con nuevo elemento añadido a la cabeza) Realizado por: Ing. Mauricio Rivera
Paquete Pila: Operaciones Pop (Pila, ElemSacado) Función: Quita el elemento de la cabeza de pila y lo devuelve en ElemSacado. Entrada: Pila Precondiciones: Pila no esta vacía Salida: Pila (cambiada) ElemSacado Postcondiciones: Pila = pila original con elemento cabeza quitado. ElemSacado = elemento cabeza de pila original. Realizado por: Ing. Mauricio Rivera
Implementación de Pilas con arreglos Creación de un tipo de dato TipoPila Type TipoElemento = char; TipoPila = Record Elementos : Array[1..MaxPila] of TipoElemento; Cabeza : 0..MaxPila end; Realizado por: Ing. Mauricio Rivera
Implementación de Paquete de Pilas Procedure LimpiarPila (VAR Pila: TipoPila); Begin Pila.Cabeza: = 0; End; Function PilaVacia(Pila:TipoPila): Boolean; {Devuelve true si esta vacía} PilaVacia : = Pila.Cabeza = 0; Realizado por: Ing. Mauricio Rivera
Implementación de paquetes de Pilas Function PilaLlena (Pila: TipoPila):boolean; {Devuelve true si pila esta llena} Begin PilaLlena: = Pila.Cabeza = MaxPila; End; Procedure push(VAR Pila : TipoPila; NuevoElemento: TipoElemento); Pila.cabeza:=Pila.cabeza+1; pila.Elementos[pila.cabeza]:=NuevoElemento; Realizado por: Ing. Mauricio Rivera
Implementación de paquetes de Pila Procedure pop(VAR Pila: TipoPila;VAR extraido:TipoElemento); Begin extraido:=Pila.Elementos[Pila.cabeza]; Pila.Cabeza:=Pila.cabeza-1; End; {como función el pop } Function pop1(VAR Pila:TipoPila):TipoElemento; Var extraido:TipoElemento; pop1:=extraido; Realizado por: Ing. Mauricio Rivera
Realizado por: Ing. Mauricio Rivera Ejercicio con Pilas Realizado por: Ing. Mauricio Rivera