feed twitter facebook LinkedIn facebook

Java » Crear una pila en Java

octubre 6, 2009 por Víctor Cuervo 11 Comentarios Imprimir Imprimir

Una pila es una estructura que nos permite apilar elementos y recopilarlos en el orden inverso al cual los apilamos mediante operaciones de desapilar. Esto es lo que se conoce como estructuras LIFO (Last In First Out). De esta manera una pila suele tener 3 operaciones básicas:

  • apilar, añade un elemento a la lista.
  • desapilar, retira un elemento de la lista
  • ¿está vacía?, comprueba si la lista está vacía.

En el lenguaje Java contamos con la clase Stack en la librería java.util. Es importante saber que la pila hereda de la pila (aka Vector). Y que por lo tanto podemos utilizar los elementos del Vector sobre la pila.

En nuestro ejemplo vamos a insertar 10 elementos, que serán números, y los recuperaremos en su orden inverso.

Lo primero será definir la pila, es decir, instanciar la clase Stack.

  1. Stack<String> pila = new Stack<String>();

Como vemos el tipo de elementos que insertaremos en la pila serán String -cadenas-.

Una vez instanciada vamos a ir creando los elementos e insertándolos en la pila. El método que inserta elementos en la pila es .push(). Este método recibirá como parámetro el elemento a insertar.

  1. for (int x=1;x<=10;x++)
  2. pila.push(Integer.toString(x));

Hemos creado un bucle que nos vaya creando los números y nos hemos apoyado en la clase Integer y su método .toString() para convertir los números en cadena.

Una vez que tenemos todos los elementos, procedemos al vaciado de la pila. Tendremos que interactuar sobre la pila hasta que esta esté vacía, cosa que nos dice el método .empty(). En cada una de las iteraciones extraeremos un elemento de la pila mediante el método .pop()

  1. while (!pila.empty())
  2. System.out.println(pila.pop());

Pocas líneas de código que nos ayudan a crear una pila en Java.

¿Qué cosas se te ocurren resolver mediante el uso de una pila en Java? Proponed casos e iremos resolviéndolos mediante el uso de una pila.

Descargar el Codigo
Descargar el código
Error en el Codigo
Error en el código
Foro sobre Java Util
Foro sobre Java Util
tags: , , , , , , ,

Artículos relacionados:

11 comentarios »

RSS feed para los comentarios de esta entrada. TrackBack URI

1 2
  1. Jhon Fernando Ortiz
    octubre 6, 2009 #

    Muy interesante este tema. ¿Qué se puede resolver con una pila? Conversión entre notaciones matemáticas: prefija, infija, postfija. Hasta pronto!

  2. Julio Avila
    octubre 29, 2009 #

    Hola he colocado la siguiente linea y me ha dado un error…
    Stack pila = new Stack();
    Dice (el error..) que no puedo especificar un tipo de dato para la pila. y me obliga a poner:
    Stack pila = new Stack();
    He agregado la libreria, import java.util.*;
    Todo el resto del codigo funciona bien, y me preguntaba por que me marca el error al poner: Stack pila = new Stack();

    Muchas gracias!

  3. Pablo
    noviembre 24, 2009 #

    Julio mira quisas ese sea tu error

    Stack pila = new Stack();

    La clase Stack la tienes que agregar asi:

    Class Stack{
    }

    la verdad estoy recien aprendiendo pero ojalas ayude saludos

  4. Pablo
    noviembre 24, 2009 #

    Julio mira quisas ese sea tu error

    Stack pila = new Stack();

    La clase Stack la tienes que agregar asi:

    Class Stack{
    }

    la verdad estoy recien aprendiendo pero ojalas ayude saludos

  5. Julio Avila
    noviembre 26, 2009 #

    si ya había resuelto el problema; muchas gracias Pablo.

  6. abner Gomez
    noviembre 9, 2010 #

    sta muy bueno… aqui les dejo un codigo por si alguien quire hacer un mini word (ctrl + z ) el evento des hacer— solo son dos botones en java y ojo este es un ejemplo con pilas (no se olviden de importar la librerira import java.util.Stack;)

    public class PilasView extends FrameView {
    Stack pila = new Stack();

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    String Tet =Texto.getText();
    pila.push(Tet);

    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    Texto.setText(pila.pop().toString());
    if(pila.empty()){
    Texto.setText(“”);
    }

    //ejemplo sencillo de pus y pop espero que a alguien le sirva— no dejen de subir ejemplos es de buena ayuda

  7. full_programig
    septiembre 5, 2011 #

    hola tengo una duda quisiera saber si hay alguna manera de guardar una pila en un nodo de una lista, no se donde de declararia la pila, si en la clase nodo, en el principal o hay que crarle una clase, gracias de antemano!!

  8. Mario
    septiembre 23, 2011 #

    Yo lo declaré a nivel de clase y lo instancié en donde lo iba a usar y no me dio problemas…

    Stack stack = new Stack();

    Declararlo a nivel de clase asi –>> Stack stack;
    o Instanciarlo cuando lo vamos a usar –>> stack = new Stack();

  9. Mario
    septiembre 23, 2011 #

    Perdon es así … fail copy paste sorry xd
    Stack stack = new Stack();

    Declararlo a nivel de clase asi –>> Stack stack;
    e Instanciarlo cuando lo vamos a usar –>> stack = new Stack();

  10. edgar eduardo
    octubre 11, 2011 #

    Desarrollar un programa que permita crear una pila con listas enlazadas para almacenear números enteros, implementar los métodos push y pop. Además de lo siguiente:

    1.Almacenar en la pila 100 números de manera aleatoria (entre 0 y 1000).
    2.Sacar uno a uno los elementos de pila e imprimir en pantalla, sólo aquellos que sean múltiplos de 3

1 2

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*