Autor
|
Tema: dudas basicas: pila (Leído 2,851 veces)
|
Fabi0lo
|
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. 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; } }
- Si el tipo de la variable tiene el mismo nombre de la clase, eso tiene alguna funcion? sirve para algo? googlé, pero no encuentro info que hable de esto.
- En la linea que dice "q.sig = this;" que es lo q está haciendo??
Tengo entendido que this hace referencia a lo q va despues del punto, por ejemplo: this.dato = dato, pero este this está pelado (sin nada), a q está haciendo referencia? que está haciendo? - Y también cuando quiero sacar, etá retornando el siguiente, no debería retornar el nodo q me encuentro parado en el momento?
|
|
|
En línea
|
|
|
|
[Case]
|
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; }
|
|
|
En línea
|
|
|
|
Fabi0lo
|
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. 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... 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. 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?
|
|
« Última modificación: 1 Abril 2012, 22:01 pm por Fabi0lo »
|
En línea
|
|
|
|
[Case]
|
- No cuando dices Pila o Stack haces referencia a toda la estructura, no a un solo nodo.
- Claro que si existe, el nombre de la clase es un tipo nuevo que defines al crear esa clase.
Otra cosa, no confundias metodo con constructor, aunque hagan algún muy parecido, no son lo mismo. - No confundas nodo con stack, un stack como dije es la cabeza seguido de otro stack, ahora a la hora de poner al siguiente lo que haces de forma secuencual es, creas una nueva pila con un único elemento, el cual es el nuevo elemento que quieres meter, después pasas el stack actual al stack siguiente del nuevo stack creado. Y regresas el nuevo stack.
.
|
|
|
En línea
|
|
|
|
Fabi0lo
|
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?
|
|
|
En línea
|
|
|
|
[Case]
|
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.
|
|
|
En línea
|
|
|
|
|
|