Pilas en JAVA?

Hola!.

Quisiera saber como programar una pila superior doble y una pila inferior doble en lenguaje JAVA.. es un trabajo de investigación y no encuentro donde consultar.. Agradezco cualquier ayuda.

1 respuesta

Calificación
  • hace 1 década
    Mejor Respuesta

    Tengo una Implementación de Pila usando una estructura de datos auto-referenciada.

    public class Pila {

    Object tope=null;

    Pila resto=null;

    /** Constructora de la pila vacía */

    public Pila() {

    this.tope=null;

    this.resto=null;

    }

    /** Constructora de una pila no vacía */

    public Pila(Object tope, Pila resto) {

    Assert.assert(tope!=null);

    this.tope=tope;

    if (resto!=null && resto.tope==null && resto.resto==null)

    {

    this.resto=null;

    }

    else {

    this.resto=resto;

    }

    }

    /** Decide si una objeto no null es la pila vacía. */

    public boolean esVacia() {

    return (tope==null && resto==null);

    }

    /** Decide si una variable tipo Pila es pila vacía */

    public static boolean esVacia(Pila p) {

    return (p==null || p.esVacia());

    }

    /** Retorna tope de una pila no vacía. */

    public Object tope() {

    Assert.assert(tope!=null);

    return tope;

    }

    /** Retorna resto de una pila, si el resto es vacio retorna null */

    public Pila resto() {

    if (Pila.esVacia(resto)) {

    return null;

    }

    return resto;

    }

    /** Saca y retorna primer elemento */

    public Object saca() { // pop

    Assert.assert(!this.esVacia());

    Object tmp=tope;

    if (Pila.esVacia(resto)) {

    tope=null;

    }

    else {

    tope=resto.tope();

    resto=resto.resto();

    }

    return tope;

    }

    /** Agrega un elemento al tope */

    public void pone(Object ntope) { // push

    this.resto=new Pila(tope, resto);

    this.tope=ntope;

    }

    /** Retorna el tamaño y cantidad de elementos */

    public int tamao() {

    if (esVacia()) {

    return 0;

    } else if (resto==null) {

    return 1;

    } else {

    return 1+resto.tamao();

    }

    }

    }

    Profesora MFV

    Suerte!!

¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.