Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Fabi0lo en 1 Abril 2012, 20:16 PM

Título: dudas basicas: pila
Publicado por: Fabi0lo en 1 Abril 2012, 20:16 PM
Buenas, estoy estudiando estructuras de datos o datos dinamicos, he buscado varios ejemplos de pila, y asumo q este ejemplo es de lo mas simple, he intentado entenderlo, pero igual me surjen unas dudas.

Código (java) [Seleccionar]
public class pila {
    int dato;
    pila sig;
    pila(int d){
        dato = d;
        sig = null;
    }
   
    public pila poner(int d){
        pila q = new pila(d);
        q.sig = this;
        return q;
    }

    public pila sacar(){
        return sig;
    }
}


Título: Re: dudas basicas: pila
Publicado por: [Case] en 1 Abril 2012, 21:12 PM
El tipo de la variable simplemente te dice de que tipo debe de ser la variable que le pases, en este caso la definición de stack(pila en ingles) es recursiva, esto es:

Un stack es:
- El stack vacio
- Un elemento a segudo de una pila S.

Donde el stack vacio es Null, y un stack es int dato seguido de un stack llamado sig.

Ahora un stack es una estructura LIFO Last In First Out, esto es, todo los elementos que insertes los pones enfrente, por lo tienes que crea una nueva pila donde:

int d es el primer elemento y la pila actual osea this, debe se ser la pila sigueinte.
q.sig debe de ser de tipo pila, por lo que al pasarle this, le estas pasando el objeto desde donde se llama la función.

Por ultimo la función sacar lo único que hace es regresar como queda la pila quitando el ultimo elemento. A lo mejor lo que tu buscas es esto:

public int sacar() {
    this = this.sig;
    return dato;
}
Título: Re: dudas basicas: pila
Publicado por: Fabi0lo en 1 Abril 2012, 21:56 PM
Ahora q lo pienso, me vinó otra duda, cuando digo pila... hago referencia a Toda la estructura? o hago referencia al nodo? porq si es lo ultimo, creo q le vería más sentido.

Cita de: [Case] en  1 Abril 2012, 21:12 PMEl tipo de la variable simplemente te dice de que tipo debe de ser la variable que le pases, en este caso la definición de stack(pila en ingles) es recursiva...
Si, pero el Tipo de variable pila no es algo existente, o sea... si creo un metodo del mismo nombre que la clase, este será un constructor, pero y si creo un tipo de variable con el mismo nombre de la clase, que es? eso es lo q no entiendo.

Cita de: [Case] en  1 Abril 2012, 21:12 PM
int d es el primer elemento y la pila actual osea this, debe se ser la pila sigueinte.
q.sig debe de ser de tipo pila, por lo que al pasarle this, le estas pasando el objeto desde donde se llama la función
Tampoco logro entenderlo, porq suena contradictorio (al menos para mi), porq lo q entiendo de esto es... del nodo el cual me encuentro parado, es el mismo que la siguiente, pero no deberían ser 2 cosas distintas?
Título: Re: dudas basicas: pila
Publicado por: [Case] en 1 Abril 2012, 23:24 PM
.

Título: Re: dudas basicas: pila
Publicado por: Fabi0lo en 1 Abril 2012, 23:42 PM
Gracias, la verdad es q es un tema q me cuesta mucho entender, porq tengo problemas con enteder los terminos.

Entonces en Conclusión... q.sig = this;   lo q hace es moverme a la siguiente posicion, la cual se encuentra vacia, por lo que si vuelvo a agregar un elemento, ya esté posicionado. Eso hace?
Título: Re: dudas basicas: pila
Publicado por: [Case] en 2 Abril 2012, 03:35 AM
Bueno estos ya son conceptos específicos del lenguaje de progrmacion, mas concretamente con los apuntadores de las variables.

Lo que hace es que a la nueva pila que tienes le pasas la vieja pila como la cola de la pila nueva y ya.
Te recomendaria que preguntaras a tu profesor mas sobre sobre esa linea si es que todavía tienes muchos problemas para entenderla.