Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Pilas en Java (http://www.forosdelweb.com/f45/pilas-java-348860/)

monorendon 10/11/2005 04:37

Pilas en Java
 
Hola me han puesto la siguiente inquietud:

Cita:

Hola compañeros quisiera que me indiquen como generar el método agregarPila(), Espero la respuesta Gracias.
Dando respuesta a dicha inquietud propongo lo siguiente:

Las pilas se basan en una lógica LIFO (Last In Firts Out - Ultimo en Entrar Primero en Salir). Para poder implementar la clase Lista, te recomiendo que crees una variable privada puntero del tipo int; o sea quedaría de la siguiente forma:

Código:

public class Lista {
    /* Atributos de la Clase Lista */

    private Object[] lista;
    /* Object[] es un array de objetos quien va hacer el
    * el que guarda los registros de cualquier tipo de Objeto. */

    private int puntero;
    /* es el puntero que va a manejar el array para poder
    * ubicar posiciones. */
    .
    .
    .

Me imagino que sabes como se declararía el constructor, tines que pasarle como parámetro el tamaño de ese vector e instanciar el array; además de instanciar el array se tiene que inicializar el puntero como inicalmente no contiene datos el array el puntero debe iniciar en 0 por default; no así en las colas, en el cual el puntero se inicaliza en el tamaño del array -1 (puntero = cola.length - 1).

Ahora si viene lo bueno, para declarar el método agregarPila() necesitas obligatoriamente un parámetro de tipo objeto, el método va a agregar ese objeto a la pila en la posición donde se encuentre el puntero; a parte de eso el puntero tiene que recorrer una posición más, tendrías que incrementar el puntero (puntero++) y el método debe retornar un valor de true or false, true cuando se haya agregado a la pila, false cuando no; También tienes que hacer el control de que si está lleno yas el array el puntero debe iniciar en 0 por default; no así en las colas, en el cual el puntero se inicaliza en el tamaño del array -1 (puntero = cola.length - 1).

Código:

    .
    .
    .
    public boolean agregarPila (Object o) {

        /* pregunto si la pila está llena. */
        if (puntero == pila.length) {

            /* Si es que está lleno no se pueden agregar más registros, por lo
            * tanto retorno falso. */
            return false;

        /* Caso Contrario */
        } else {

            /* Significa que la pila aún no está llena y puedo seguir
            * agregando registros. Y agrego en la posición puntero. */
            pila[puntero]=o;

            /* Incremento el puntero para que se desplace hacia la siguiente
            * posición. */
            puntero++;

            /* Retorno verdadero, porque se agregó el objeto. */
            return true;
        }
    }
    .
    .
    .

Si algo en el código no entiendes o no te compila, me lo dices.

GreenEyed 10/11/2005 14:53

Y no es mas rapido usar la clase java.util.Stack?

Digo :)

monorendon 10/11/2005 15:08

Es que aun estamos viendo codigo sencillo, osea, como para saber como se manejan los punteros en las colas y en las pilas... si quieres puedes aportar con otras ideas, no hay problema, gracias por tu colaboración.


La zona horaria es GMT -6. Ahora son las 21:51.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.