// Pilas.java // Autor: ing.

Ramires Pavia Juan // Programa de representacion de datos ordenados por medio de Pilas y // se ejecuta en modo texto //======================================================= import java.io.*; //importa libreria de entrada y salida public class pilas { //declara la cals pilas public static class ClasePila { // Declaracion de la clase de la Pila private int max=10; // Tamano maximo de la pila private int pila[] = new int [max]; // Arreglo para almacenar la pila private int top; // Indica la cantidad de datos en la pila public ClasePila() { // Constructor top=0; //capacidad de la cadena System.out.println("Pila creada !!!"); // salida en pantallla } public void Push(int dato) { //introducir dato a la pila if(top==max) // Esta llena la Pila? { System.out.println("Pila llena !!!"); //salida a pantalla return; //retorno de carro } for(int i=0; i<top; i++) { //for para agitar la pila=i if(pila[i]==dato) { // Ya existe el dato? System.out.println("Duplicado !!!");//salida en pantalla return;//retorno de carro } if(dato<pila[i]) { // Alta al principio o intermedia for(int j=top;j>i;j--) //for que agita el limite de la pila pila[j]=pila[j-1];//limite del arreglo pila[i]=dato; //iguala pila a dato top++; //incremento al top System.out.println("Dato insertado al principio o intermedio !!!"); //Salida apantalla return;//retorno de carro } } pila[top++]=dato; // Alta al final System.out.println("Dato insertado al final !!!"); //salida a pantalla return;//retorno de carro } public void Pop(int dato) {//introducir elemento para borrar if(top==0) { // Esta vacia la Pila? System.out.println("Pila vacia !!!");//salida en pantalla return;//retorno de carro } for(int i=0;i<top;i++) { //for ke agita los valores de la pila if(pila[i]==dato) { //busca dato en la cadena for(int j=i; j<top-1; j++)// for para buscar en la pila pila[j]=pila[j+1]; //busca en lso elementos de la pila top--;//fin de la pila System.out.println("Dato eliminado !!!");//salida a pantalla return;//retorno de carro

} } System.out.println("Dato inexistente !!!");//salida en pantalla } public void Mostrar() {//Muestra los datos almacenados System.out.println("\n\n<<< MOSTRAR LA PILA >>>");//salida en pantalla if(top==0) System.out.println("Pila vacia !!!"); for(int i=0;i<top;i++)//For que agita a i System.out.println("pila["+i+"]="+pila[i]);//salida a pantalla System.out.println("top="+top); System.out.println("max="+max); }

}

static ClasePila Pila=new ClasePila();

// Declaracion del objeto Pila

// Funcion principal public static void main(String args[]) throws IOException { int op=0; do { op=0; System.out.println("\n\n<<< PILAS >>>"); System.out.println("1.-Push"); System.out.println("2.-Pop"); System.out.println("3.-Mostrar Pila"); System.out.println("0.-Salir"); //op=Integer.parseInt(JOptionPane.showInputDialog("Opcion? ")); System.out.print("Opcion? ---> "); op=getInt(); switch(op) { case 1 : Altas(); case 2 : Bajas(); case 3 : Pila.Mostrar(); } }while(op!=0); break; break; break;

}

public static void Altas() throws IOException { int dato=0; System.out.println("\n\n<<< ALTAS >>>"); System.out.print("\nAnote el dato que desea insertar ---> "); dato=getInt(); Pila.Push(dato); // Invocar el metodo Push del objeto Pila } public static void Bajas() throws IOException { int dato=0; System.out.println("\n\n<<< BAJAS >>>"); System.out.print("\nAnote el dato que desea eliminar ---> "); dato=getInt(); Pila.Pop(dato); // Invocar el metodo Pop del objeto Pila }

// Funcion para capturar una cadena desde el teclado public static String getString() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readLine(); return s; } // Funcion para capturar un entero desde el teclado public static int getInt() throws IOException { String s = getString(); return Integer.parseInt(s); } }