Una pila es una versión restringida de una lista. En todo momento sólo se tiene acceso a la parte superior de la pila, es decir,al último objeto apilado. Por esta razón, a una pila se le conoce como una estructura de datos LIFO(Last In First Out).
Una pila al ser una lista puede almacenar en el campo de información cualquier tipo de valor (int, char, float, vector de caracteres, un objeto, etc), por analogía con objetos cotidianos, una operación apilar(push) equivaldría a colocar un plato sobre una pila de platos, y una operación retirar(pop) a quitarlo. En palabras sencillas es un lugar donde se almacenan datos.
Leamos un par de ejemplos simples de pila en Java:
Pila programada sin usar la clase Stack.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
//Ejemplo #1 import java.util.Scanner; public class Pila { Scanner teclado = new Scanner(System.in); int pila1[]=new int[4]; int tope=-1; public int push(){ if(tope>=pila1.length-1){ System.out.println("la pila está llena"); }else { tope+=1; System.out.println("ingrese el dato"); pila1[tope]=teclado.nextInt(); } return tope; } public int pop(){ if(tope==-1){ System.out.println("La pila esta vacia"); }else{ System.out.println("Se elimino un elemento de la pila"); pila1[tope]=0; tope=-1; } return tope; } public void ver(){ for(int tope=3;tope>=0;tope--){ System.out.println("Datos de la pila: "+pila1[tope]); } } public static void main(String[] args) { Pila objeto=new Pila(); Scanner opcion = new Scanner(System.in); int seleccion; do { System.out.println("Menu de pila");//Creamos un menú sencillo para la pila System.out.println("1. Push");//Llamamos al método para insertar al tope System.out.println("2. Pop");//Llamamos al método para sacar el tope de la pila System.out.println("3. Mostrar completa");//Ver la pila completa System.out.println("4. Salida");//Salir de nuestro pequeño menú principal System.out.println("Teclee la opcion"); seleccion=opcion.nextInt(); switch(seleccion){ case 1: objeto.push(); break; case 2: objeto.pop(); break; case 3: objeto.ver(); break; default: System.out.println("Error\nOpcion invalida"); } }while(seleccion!=4); } } |
Pila programada usando la clase Stack.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//Ejemplo #2- Pila public class PilaStack { public static void main(String[] args) { Stack pila =new Stack(); pila.push("elemento 1"); pila.push("elemento 2"); pila.push("elemento 3"); System.out.println("1- push: "+ pila); pila.pop(); System.out.println("2- pop: "+ pila); String x = pila.peek(); System.out.println("3- peek: "+x); boolean y = pila.empty(); System.out.println("4- empty: "+y); } } |
Métodos:
empty(): Regresa valor booleano true si la pila se encuentra vacía.
push(item) : Introduce el objeto dentro de la pila.
pop(): Remueve el objeto de el tope de la pila
peek(): Muestra el objeto del tope de la pila sin extraerlo.
search(item): Regresa un entero con la posición de el objeto buscado o regresa un -1 si no se encuentra el objeto.
Es importante destacar que la pila independientemente del lenguaje, es un TDA usado en muchísimos lugares, por ser un modelo muy representativo de la recursividad, el manejo de un Sistema Operativo, entre muchos otros.
Muchísimas gracias!! 😀 en verdad me fue de gran utilidad.
Omar Kabada liked this on Facebook.