Clase Pila en Java

De recorrida por algunos blogs, me encotré esto: Pila Estática en Diario De Un LiNuX3ro

Dada, mi escasa experiencia en Java, pero mi deseo de programar, me puse a leer el código y reescribirlo por mi cuenta haciendo lo mismo, pero intentando hacer algo diferente.

Así fue que me quedó una clase Pila, que hace uso de un Vector genérico (parametrizado). Agradezco opiniones, sugerencias y/o cualquier solución más elegante.



[JAVA]
package pilas;

import java.util.Vector;

public class Pila {

private int size;
private Vector elementos;

public Pila() {
super();
elementos = new Vector();
size = 0;
}

public boolean pilaVacia () {
if (size==0) {
return true;
}
return false;
}

public void apilar ( Tipo o ) {
elementos.add(size, o);
size++;
}

public Tipo desapilar () {

try {
if(pilaVacia())
throw new ErrorPilaVacia();
else {
return elementos.get(--size);
}
} catch(ErrorPilaVacia error) {
System.out.println("ERROR: la pila esta vacía");
return null;
}
}

public int getSize() {
return size;
}

}

@SuppressWarnings("serial")
class ErrorPilaVacia extends Exception {
public ErrorPilaVacia() {
super();
}
}
[/JAVA]


[JAVA]
package pilas;

public class Test {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
Pila pila;

pila = new Pila();
System.out.println("Elementos en pila: " + pila.getSize());

pila.apilar("Uno");
System.out.println("Elementos en pila: " + pila.getSize());

pila.apilar("Dos");
System.out.println("Elementos en pila: " + pila.getSize());

System.out.println("Extraigo.........: " + pila.desapilar().toString());
System.out.println("Elementos en pila: " + pila.getSize());

System.out.println("Extraigo.........: " + pila.desapilar().toString());
System.out.println("Elementos en pila: " + pila.getSize());

pila = new Pila();
System.out.println("Elementos en pila: " + pila.getSize());

pila.apilar(1);
System.out.println("Elementos en pila: " + pila.getSize());

pila.apilar(2);
System.out.println("Elementos en pila: " + pila.getSize());

System.out.println("Extraigo.........: " + pila.desapilar().toString());
System.out.println("Elementos en pila: " + pila.getSize());

System.out.println("Extraigo.........: " + pila.desapilar().toString());
System.out.println("Elementos en pila: " + pila.getSize());

}

}
[/JAVA]

19 comentario en este artículoDeje el suyo
  1. quiciera que explique las diferentes ejecuciones de pila en NedtBeans

  2. public class Pila {
    private Stack stack;

    public Pila() {
    stack = new Stack();
    }

    public boolean empty() {
    return stack.empty();
    }

    public void push(E item) {
    stack.push(item);
    }

    public E pop() {
    return stack.pop();
    }

    public E peek() {
    return stack.peek();
    }
    }

    Me parece que es bastante mas sencilla la implementacion

  3. Si! Sin dudas :-)

    El objetivo fue simplemente conocer un poco de estructuras de datos, por ese motivo hicimos a “pala” la clase pila.

    Pero estoy totalmente a favor de utilizar las clases de Java que ya nos dan resueltos estos casos (para que reinventar la rueda ¿no?)

    Gracias por el aporte.

  4. public class Pila {
    //Tope de la lista
    NodoDePila tope, aux;
    //Constructores sobrecargados para varios casos
    public Pila() {
    tope = null;
    }
    public Pila(int n) {
    tope = new NodoDePila(n);

    }
    public Pila(NodoDePila n) {
    tope = n;
    }
    // Push
    public void Push(int n){
    NodoDePila nuevo = new NodoDePila(n);
    nuevo.sig = tope;
    tope = nuevo;
    }

    // Eliminar el nodo en la posicion p
    public int Pop(){
    int v=0;
    NodoDePila actual = tope;

    if (tope!=null){
    actual = tope;
    tope = actual.sig;
    v = actual.num;
    }
    else
    System.out.println(“Pila vacia”);
    return v;
    }

    public void mostrar(){
    NodoDePila actual = tope;
    if (tope == null)
    System.out.println (“Pila vacia”);
    else {
    while (actual != null ) {
    System.out.print(actual.num+” -> “);
    actual = actual.sig;
    }
    System.out.println (“null”);
    }

    }

    public static void main(String[] args) {
    // Crear una lista y probar su funcionamiento
    Pila pila = new Pila();
    int e, opc, datoNumerico;
    String cadena;
    do {
    System.out.println (“Operaciones con Pilas (dinamicas)”);
    System.out.println (“—————————“);
    System.out.println (“1. Push”);
    System.out.println (“2. Pop”);
    System.out.println (“3. Mostrar Pila”);
    System.out.println (“4. Otra”);
    System.out.println (“5. Salir”);
    System.out.println (“\n”);
    opc = Leer.datoInt(“Elige una opcion –>”);

    switch (opc) {
    case 1:
    datoNumerico = Leer.datoInt(“Dame elemento: “);
    pila.Push(datoNumerico);
    break;
    case 2:
    e = pila.Pop();
    System.out.println (“Elemento extraido: “+e);
    break;
    case 3:
    pila.mostrar();
    break;
    case 4:

    break;
    }
    } while (opc != 5);
    }
    }

  5. aki ahy guias para java http://www.utim.edu.mx/~svalero

    cehken ahy varias cosas de java y de C

  6. busquen en cursos ok

  7. Muchas gracias por el aporte!

    Saludos.

  8. Me quedaron colgados unos genericos….:P en el ejemplo

  9. hola que significan esos “\” son validos en java???????????

  10. Hay un par de cosas que son de novato novato. por ejemplo el metodo pilaVacia()

    se puede resumir en una linea

    return size==0;

    dos variables del mismo tipo con una operacion de relacion devuelve un valor booleano, y no hace falta poner la burrada que pone este señor

  11. Si Toni, estoy de acuerdo… ahora no te la vengas a dar de capo, este ejemplo está hecho con fines didácticos, y para novatos es más legible eso que consideras “burradas”.

  12. q onda chavos veran. Estudio en el InstitutoTecnologico de Durango 4to sem de Ing en sistemas en el cual hay un monton d profesores q no sirven para nada, como mi profesor de 1er sem de sistemas, Fundamentos d programacion, q al modo se baso en los conocimientos de una compañera q ya sabia programar y nada q yo me qede atras, de ahi pues q ProgramacionOrientada aObjetos y TopicosSelectos deProgramacion me han pasado de noche, ahora en 4to semestre que curso tengo un profesor bueno, pero no se toma el tiempo de explicarme lo d semestres anteriores, obvio no perdera su tiempo, necesito ayuda para aprender conceptos basicos ! ruego su ayuda porfavooorrr !! se conceptos teoricos pero practicos vaya! no se nada… ahora necesito saber de pilas e implementacion y veran q no se nada… algun voluntario (:

  13. hola:
    estoii empezando mi cuirso de estructura de datos
    ii en este momento estoii llevendo pilas
    pero no le entiiendo muii biien
    no podrian subir algunos ejemplos de estas ii explicar un poko para ke sirve cada liinea??
    porfa espero respuesta pronto
    graciias :D

  14. cual es el codigo para que un programa de java en modo consola termine y se salga autoamticamente del programa despues de una instruccion y ademas de otra en un
    applet

  15. Una implementacion basada en un Arreglo. Por favor sugerencias.

    public class PilaArreglo {

    private Integer [] pila;
    private int size;

    public PilaArreglo(int tam){
    pila = new Integer[tam];
    size = 0;
    }

    public void push(int item)throws Exception{
    if(size = 0 ; i–)
    System.out.println(pila[i]);
    }

    public static void main(String[] args) {

    PilaArreglo pilita = new PilaArreglo(6);
    try{

    pilita.push(5);
    pilita.push(9);
    pilita.push(6);
    pilita.push(3);
    pilita.push(7);

    pilita.imprimirPila();
    System.out.println(“se retira el elemento: “+ pilita.pop());
    System.out.println(“se retira el elemento: “+ pilita.pop());
    System.out.println(“se retira el elemento: “+ pilita.pop());
    System.out.println(“se retira el elemento: “+ pilita.pop());
    System.out.println(“se retira el elemento: “+ pilita.pop());
    System.out.println(“se retira el elemento: “+ pilita.pop());

    pilita.imprimirPila();
    }
    catch(Exception e){
    System.out.println(e.getMessage());
    }

    }

    }

  16. hacer algoritmos en otros programas a parte de eclipse es un asco no sirven,,,,,,,,

  17. hahaha luis….
    hay diferentes plataformas aparte de eclipse…..que no sepas como programar es otra cosa…

  18. Aqui hay una implementacion de Pila y Cola en java

    http://usandojava.blogspot.com/2012/01/implementacion-de-pila-y-cola.html

  19. quisuera q me ayuden con un ejercicio (realizar un programa en java q permita atravez de un menurealizar los sig operaciones
    [1]insertar
    [2]eliminar
    [3]mostrar pila
    [4]mostrar elemento top
    [5]salir
    elija opcion:

2 menciones a este artículo
Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2014

WordPressx411W567p429X67