Link Log

Una manera de perder el tiempo…

Pilas en Java

with 18 comments

Actualización: http://www.israelsc.mx/programacion/java/pilas-en-java/

 

Bueno, voy a poner el código de un programa en Java que hace uso de pilas. En este programa se le ingresa una palabra (hasta las groserías funcionan…), y separa las letras y las imprime de una en una de abaja hacia arriba:

Ejemplo: Si se escribe la palabra JAVA.
La impresión sera:
A
V
A
J

Bueno, aquí esta el código:

import java.io.*;
import java.util.Scanner;
public class PilaCadena{
       public static void main( String args[] ){
       Scanner leer = new Scanner(System.in);
       operapilaschar Obj = new operapilaschar();

       String cadena;
       char ch;

       System.out.println( "Escribe texto:" );
       cadena = leer.next();

       for( int i=0; i<cadena.length(); i++ ){
       	ch = cadena.charAt(i);
       	Obj.push(ch);
       	}

       	for( int i=0; i<cadena.length(); i++ ){
       		Obj.pop();
       		System.out.println( Obj.dret );
       		}
       }
}

Hace uso de los métodos de la siguiente clase:

class operapilaschar

  {

    public static char dret;

    public static int max;

    public static char pila[];

    public static int tope = -1;

    public operapilaschar()

      {

 	max=20;

 	pila=new char [max];

      }

    public operapilaschar(int n)

      { 

 	 max=n-1;

 	 pila = new char [max];

      } 	 	

 public static boolean pila_Llena(int tope,int max)

  {

  	 boolean llena;

  	 if (tope==max)

  	      llena=true;

  	    else

  	      llena=false;

  	 return llena;

  }	        

 public static boolean pila_Vacia(int tope)

  {

 	 boolean vacia;

 	 if (tope == -1)

 	    vacia=true;

 	   else

 	    vacia=false;

 	 return vacia;

  }

 public static void push(char dato)

 {

 	if(pila_Llena(tope,max))

 	  System.out.println("!Cuidado!, Desbordamiento!!!!!");

 	   else

 	     {

 	     	tope++;

 	     	pila[tope]=dato;// pone el nuevo dato en la pila

 	     }

 }	     	

public static void pop()

 {

 	if (pila_Vacia(tope))

 	   System.out.println("!Cuidado!, Subdesbordamiento!!!!!");

 	else {

 		  dret=pila[tope];

 	      tope--;

 	      }// actualiza tope y se elimina elemento en el tope

 }

public static boolean compara(int dret,int ch)

 {

	if (dret=='(' && ch==')' || dret=='{' && ch=='}' || dret=='[' && ch==']')

	  return true;

	  else 

	  return false;

 }

 public static void estado()

  {

  	int i;

  	System.out.println(" El estado de la pila es : ");

  	System.out.println(" --------------------------");

  	for(i=0;i<=tope;i++)

  	 {

  	 	System.out.println("pila["+i+"] : "+pila[i]);

  	 }

  }
}

Written by Link X

April 10, 2008 at 12:33 am

Posted in Java

Tagged with , ,

18 Responses

Subscribe to comments with RSS.

  1. te felicito por el trabajo y dedicacion

    cristian

    September 25, 2008 at 12:59 pm

    • que tal oye cual es la verdadera condición dentro del último for y esto es lo que me da error
      (i=0;i<=tope;i++)

      Diego Pilicita Escobar

      November 29, 2012 at 9:49 pm

  2. Hola!*
    muy buen aporte..felicidades x eso!*
    mmm…tengo una duda…
    ¿el programa tiene errores o es mi compilador?
    lo que pasa es que cuando lo compilo me marca muchisimos erores..la verdad es k no soy muy buena en esto ..hice el intento en corregir pero no me sale..no se si puedas ayudarme cn esto..de antemano gracias!*

    aki mi mail isis2d@hotmail.com

    Dulce

    November 6, 2008 at 11:36 pm

  3. El programa esta bien, lo que pasa es que de seguro te salio mal al copiar directamente de aquí e intentaste compilar.
    Casi siempre hay problemas con las comillas o algún otro carácter, hay que checar bien los errores que de el compilador.

    Link

    November 10, 2008 at 9:20 pm

  4. disculpa pero me paso lo mismo cuando copie tu codigo quisiera saber si me pudes orientar un poco mas apenas estoy empezando a manejar java y pues ya sabes algunas cosa se me complican si me pudiese ayudar te lo agradeciar

    gracias

    Angel

    November 23, 2008 at 5:26 pm

  5. nesecito ayuda con listas y colas, debo hacer un programa que ingrese un nombre de un autmovil y que le asigne algun trabajo(pintar, enderesar, limpiar, etc) y luego que los pueda mostrar

    Fabian

    March 7, 2009 at 2:53 pm

  6. graciaaaaaas uf no sabes cuanto he necesitado tu programa!!

    alex

    March 16, 2009 at 5:00 pm

  7. oye men porfa mandame el codigo ami correo mepec_186@hotmial.com
    esk no me permite compilarlo

    mario

    October 12, 2009 at 6:37 pm

  8. no mamen su pilin

    juor

    October 8, 2010 at 10:33 am

  9. xD xD No se nota que sta desesperado

    quit

    November 6, 2010 at 3:31 pm

  10. Esta bueno recien entro a este tema en Estructura de datos grax

    DBott

    June 13, 2011 at 9:22 pm

  11. En este codigo:

    public static boolean pila_Vacia(int tope)

    {

    boolean vacia;

    if (tope == -1)

    vacia=true;

    else

    vacia=false;

    return vacia;

    }

    podrías mejorarlo sin necesidad de declarar variables booleanas intermedias.

    public static boolean pila_Vacia(int tope)
    {
    return (tope == -1);
    }

    Más bien, el declarar variables boolean auxiliares puede ser de gran utilidad para cuando uses una estructura de repetición como el while y tengas que cambiarle el valor booleano para salir del bucle, asi te evitas usar la sentencia nunca recomendada ‘break’. Saludos!

    David Cadillo Blas

    September 18, 2011 at 9:39 am

  12. me podrias enviar el codigo ami correo ? jorge_znikr@hotmail.com

    zniikr

    October 21, 2011 at 9:59 am

  13. ocupo solo una pila sin stack, me arias el favor de hacerla y mandarla a mi correo angel_tresor@hotmail.com
    por favor…

    Ángel Martìnez

    October 26, 2011 at 10:03 pm

  14. Mmmm pues copie y pegue directamente y tiene muchos errores, no se que sea, si esta igual que aqui :S
    Tu no copiarias mal? y que en internet se hayan convertido los caracteres?
    Mejor si subes un txt o el .java de las clases para verlas😀
    Saludos

    Daniel Escobar

    March 6, 2012 at 6:32 pm

  15. There are lots of green products about the market today that claim to
    become organic although not all of these are. They use a reputation for designing quality strollers which might be both comfortable and durable.

    Alvin

    May 11, 2013 at 5:41 pm

  16. saludos al momento de copiarlo me salen mucho errores si me puedes ayudar con el programa gracias este es mi correo gj_gary_91@hotmail.com

    Gandhi

    May 24, 2013 at 7:34 pm

  17. disculpa esta linea que contiene porque no encuentro la variable amp y me marca error al compilarlo en netbeans me podrias ayudar a entender esta linea, telo agradeceria mucho
    if (dret=='(‘ & amp ;& ch==’)’ || dret=='{‘ && ch==’}’ || dret=='[‘ && ch==’]’)
    crisgpe12dic@gmail.com

    Cristian Arriaga

    June 27, 2015 at 9:10 pm


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: