lunes, 30 de marzo de 2009

PILAS

Datos que se introducen (añaden o apilan) o se extraen (extraen o des apilan).



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