Tope (Se debe analizar cuando esta vacía)
Operaciones con la pila
1. PUSH: Añade un elemento a la pila.
2. POP: Quita un elemento a la pila.
3. PEEK: Tope de la pila.
4. IsEmpty: (Esta vacía) Determina que una pila no tiene elementos.
5. IsFull: (Esta llena) Determina si la pila esta llena.
6. Size: Determina el numero de elementos de la pila.
Ejemplo:
LIFO:
Last → in → ultima en entrar
First → out → primera en salir
Implementación:
1) Mediante un arreglo (Estatico) - Tamaño –Vector
[-1(Tope)][0][1][2][3]
2) Lista Enlazadas ( Dinamicas)
AN ( extraer, des apilar)
Ejemplo (1+2)*4+3
Entrada Operación Pila
1Apila operador 1
2Apila operador 1,2
+Añade 3
4Apila operador 3,4
*Añade 12
3Apila operador 12,3
+Añade 15 (Tope)
Nota: No tiene encuentra los paréntesis y pera de izquierda a derecha
Metodo_Principal.java
(Metodo Principal) JAVA:
import java.io.*;
public class Metodo_Principal{
/Declaramos el metodo principal public static void main (String args[])throws IOException {
BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
int Espacios = 0;
char Resp, op;
String aux;
//--- Imprimir Menu ---- \\
System.out.println("\n :: XROM RELOADED :: 19/07/07 \n"); System.out.print("\t Cuantos espacios quiere en la Pila (entre 3 y 30 recomendable)? :");
Espacios = Integer.parseInt(entrada.readLine());
Pila Ejecutar = new Pila(Espacios);
System.out.println("\n\n\t --- //---- Menu Pila------\\\\---- \n");
do { System.out.println("\n\n1.- Imprimir Pila");
// Mostrar System.out.println("2.- Agregar Elemento a la pila");
// Push System.out.println("3.- Quitar Elemento de la pila");
// Pop System.out.print("\n\n Elija una Opcion : ");
aux = entrada.readLine();
op = aux.charAt(0);
//---- Elegir opcion ---\\ switch (op) { case '1': Ejecutar.Imprimir();
break;
case '2': Ejecutar.Push();
break;
case '3': Ejecutar.Pop();
break;
default: System.out.println("opcion fuera de rango !!"); }
// Fin del switch System.out.print("Desea hacer otra operacion ?? S / N ");
aux = entrada.readLine();
Resp = aux.charAt(0);
} while (Resp == 'S' Resp == 's');
System.out.println(" Garcias por utilizar este programa.. "); System.out.println("\t para mas informacion en :: WWW.XROMRELOADED.TK ::");
} // Fin del metodo main }
// Fin de la calse Pila.java
(Clase y Metodos) JAVA:
// Libreria necesaria para introducir datos desde el Teclado import java.io.*;
// Inicio de la Clase Pila public class Pila {
//----- Atributos de la pila ------\\
public int Pila [];
// Estructura de la pila public int Top, Max , Elem;
// variables para la pila
//Top : El Tope de la pila , referencia al ultimo elemento que esta en la pila //Max : Maximo de espacios que tiene la pila //Elem : Elemento que se agrega a la pila (Tecleado por el usuario)
public char Resp;
// Variables para SubMenus. public String aux;
//----- Contructor -------\\
public Pila (int Espacios){
// se recibe como parametro los Espacios de la pila Pila = new int [Espacios];
// Asignamos los espacios en la Pila Max = Pila.length - 1; Top = -1;
// Top se declara como -1 como referencia a que no existen datos en la pila }
// fin del constructor
//----- Metodos de la pila -------\\
// Metodo Imprimir
public void Imprimir ()
{ for (int n = 0 ; n <= Max ;
n++ ) { System.out.println(n + ".- " + Pila [n]);
}
} //----Fin del Metodo Imprimir
// Metodo Push ---
public void Push ( ) throws IOException
{ // Metodo para ingresar datos ...
BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
do { // if (1) if(Top != Max)
{ // Si la pila No esta llena ....
// Se puede agregar un nuevo dato a la pila ....
System.out.print("\t Ingrese un numero entero : ");
Elem = Integer.parseInt(entrada.readLine());
Top ++;
// Se incrementa Top como referencia de que se agrego un nuevo dato Pila[Top] = Elem;
// Se agrega el nuevo elemento a la pila // if (1.1) if (Top == Max) {
// Si la pila quedo llena entoces ...
// Imprimir mensaje System.out.print("\n La Pila a quedado llena !! ");
// con esta variable detenemos el bucle do - while Resp = 'N';
} // Fin del if (1.1) } else { System.out.p
rintln("\n Pila llena !! Imposible introducir un valor a la pila"); Resp = 'N';
// detenemos el bucle }
// Fin del if (1)
// if (2) if (Resp != 'N') {
// Si es diferente de No , entoces seguir preguntado si se desea introducir mas datos
System.out.print("Desea introducir un dato mas ??"); aux = entrada.readLine();
Resp = aux.charAt(0);
} // Fin del if (2) }
while (Resp == 'S' Resp == 's');
// Continuar ciclando simpre y cuando sea Resp = 's' } //
Fin del Metodo Push
// Metodo Pop ----
public void Pop () {
if(Top != -1) {
// Si la pila no esta vacia entonces ....
System.out.println("Se borro el Dato : " + Pila[Top]);
// Eliminar dato Pila[Top] = 0;
// remplaza el valor por un cero (Eliminado) Top --;
// Top se reduce para decir que un elemento se borro }
else {
// De lo contrario imprime .."que la pila esta vacia" System.out.println("Pila Vacia... Imposible Eliminar");
} // fin del if }
//-----Fin del Metodo Pop } // Fin de la Clase Pila ----
0 comentarios:
Publicar un comentario