PILAS • Una Pila es un contenedor de objetos que son insertados y removidos de acuerdo con el principio LIFO(Last In-First Out), último en entrar, primero en salir. Los objetos pueden ser insertados en la pila en cualquier momento, pero solo el mas reciente (el último) es el objeto que puede ser removido en cualquier momento. PILAS • El nombre de pila se deriva de la metáfora de una Pila de platos en un restaurant. Operaciones Básicas • Las operaciones básicas de una pila son “push” (empujar, meter) y “pop” (sacar) – Push: añade un nuevo elemento a la pila – Pop: elimina un elemento de la pila Operaciones adicionales • Adicionalmente se definen los siguientes métodos: – Size(): Regresa el número de objetos en la pila. – isEmpty(): Regresa un booleano indicando si la pila esta vacía. – Top(): Regresa el objeto que esta en el tope o en la cima de la pila, sin removerlo. Ejemplos de Aplicaciones con Pilas • Navegador Web – Se almacenan los sitios previamente visitados – Cuando el usuario quiere regresar (presiona el botón de retroceso), simplemente se extrae la última dirección (pop) de la pila de sitios visitados. • Editores de texto – Los cambios efectuados se almacenan en una pila – Usualmente implementada como arreglo – Usuario puede deshacer los cambios mediante la operación “undo”, la cual extrae el estado del texto antes del último cambio realizado. Pilas en Java • En el lenguaje Java contamos con la clase Stack en la librería java.util. Es importante saber que la pila hereda de la pila (aca Vector). Y que por lo tanto podemos utilizar los elementos del Vector sobre la pila. Definir la pila en Java • Lo primero será definir la pila, es decir, instanciar la clase Stack.
Stack<String> pila = new Stack<String>();
• Como vemos el tipo de elementos que
insertaremos en la pila serán String -cadenas-. • Una vez instanciada vamos a ir creando los elementos e insertándolos en la pila. El método que inserta elementos en la pila es . push(). Este método recibirá como parámetro el elemento a insertar. • for (int x=1;x<=10;x++) • pila.push(Integer.toString(x)); • Una vez que tenemos todos los elementos, procedemos al vaciado de la pila. Tendremos que interactuar sobre la pila hasta que esta esté vacía, cosa que nos dice el método .empty(). En cada una de las iteraciones extraeremos un elemento de la pila mediante el método .pop() • while (!pila.empty()) • System.out.println(pila.pop());