Definición:
Son aquellas que solo tiene 2 operaciones, Push(Inserción) y Pop(Eliminación) la cual solo se puede efectuar por un extremo llamado Top. Sin Embargo se le pueden aplicar todas las operaciónes al igual que a las listas.
Operaciones
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual.- Crear: se crea la pila vacía.
- Apilar: se añade un elemento a la pila.(push)
- Desapilar: se elimina el elemento frontal de la pila.(pop)
- Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
- Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.
Tipos de Pilas
- Estatica
- Dinamica
Ejemplo
Programa Pila
Programa Pila
import java.io.*; public class Pila{ public static BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in)); public static final int MAX_LENGTH = 5; public static String Pila[] = new String[MAX_LENGTH]; public static int cima = -1; public static void main(String args[])throws IOException{ Menu(); } public static void Menu()throws IOException{ System.out.println("\n\n\t\t\t=========Menu Manejo Pila============="); System.out.println("\t\t\t= ="); System.out.println("\t\t\t= 1- Insertar elemento ="); System.out.println("\t\t\t= 2- Eliminar elemento ="); System.out.println("\t\t\t= 3- Buscar elemento ="); System.out.println("\t\t\t= 4- Imprimir pila ="); System.out.println("\t\t\t= 5- Actualizar valor en pila ="); System.out.println("\t\t\t= 6- Salir ="); System.out.println("\t\t\t======================================"); System.out.print("\t\t\tOpcion: "); int op = Integer.parseInt(entrada.readLine()); Opciones(op); } public static void Opciones(int op)throws IOException{ switch(op){ case 1: Insertar(); break; case 2: Eliminar(); break; case 3: Buscar(); break; case 4: Imprimir(); break; case 5: Actualizar(); break; case 6: System.exit(1); break; default:Menu(); break; } } public static void Insertar()throws IOException{ System.out.print("\nDigite algo para la pila: "); String dato = entrada.readLine(); Crear(dato); } public static void Crear(String dato)throws IOException{ if ((Pila.length-1)==cima){ System.out.println("Capacidad de la pila al limite\n\n\n"); Imprimir(); }else{ ++cima; } Agregar(dato); } public static void Agregar(String dato)throws IOException{ Pila[cima]=dato; Menu(); } public static void Imprimir()throws IOException{ for(int i=Pila.length-1;i>=0;i--){ System.out.println(Pila[i]); } Menu(); } public static void Eliminar()throws IOException{ if(cima== -1){ System.out.println("\n\n\nNo se puede eliminar, pila vacia !!!" ); }else{ Pila[cima] = null; --cima; } Menu(); } public static void Buscar()throws IOException{ System.out.println("\n\n\nDigite la cadena a buscar: "); String cad = entrada.readLine(); for(int i=0;i<Pila.length-1;i++){ if(cad.equals(Pila[i])){ System.out.println("Elemento encontrado,posicion "+i); break; }else{ System.out.println("Elemento no encontrado :("); } } Menu(); } public static void Actualizar()throws IOException{ System.out.print("Digite el nombre del valor que desea actualizar: "); String actual = entrada.readLine(); System.out.print("Digite el nombre del nuevo valor: "); String nuevo = entrada.readLine(); for(int i=0;i<Pila.length-1;i++){ if(actual.equals(Pila[i])){ Pila[i]=nuevo; break; }else{ System.out.println("Elemento no encontrado :("); } } Menu(); } }