lunes, 5 de noviembre de 2012

Pilas en Java

Queridos amigos que nos siguen en la alegría de programar, hoy veremos como hacer una pila en java. Para empezar vamos a ver


¿Que es una pila?


No hablamos de baterías  las pilas o “stack”, se refieren a una estructura de datos muy básica  cuya estructura es LIFO por “Last In, First Out”, que quiere decir “el primero que entra es el ultimo en salir”.

Si ponemos una moneda de 2 pesos, en el suelo, y arriba de ella otra de 10, y luego otra de 5, tendremos monedas apiladas, cuyo “top” (tope o cima) seria la de 5, si quitamos el top, el top seria la de 10, si quitamos el top, el top seria la de 2, si quitamos la de 2, la pila queda vacía.

Al obtener el top le llamamos “pop” y al meter algo en la pila le llamamos “push” (empujar), siempre que hacemos push, lo que pusimos se vuelve el top, y es el que saldria en caso de hacer un pop.

Ahora que conocemos que es una pila, sus operaciones (push y pop), su estructura (LIFO) y que es a lo que le llamamos top, pasemos a la implementación.


La clase Nodo.


Primero definiremos una nueva clase llamada Nodo, la cual solo tendra dos atributos, el dato, y el nodo siguiente, el dato puede ser del tipo que sea, pero en este ejemplo, sera de tipo char.

Imaginemos el nodo de la siguiente forma: 


[X]->null

Donde 'X', es el dato, y la flechita esta apuntando al nodo siguiente (que en este caso es null es decir nulo).

Vamos a ponerle un nodo no nulo a nuestro primer nodo, se vería así: 

[X]->[Y]->null 

Ok, esto nos va a servir de mucho en la implementación de nuestra pila, pero aun nos falta algo que nos diga quien es el top, y que defina las operaciones pop y push, con ustedes...


La clase Pila



Esta tendrá solo un atributo: el top, de tipo Nodo, y dos métodos  por supuesto: pop y push.

Entonces imaginemos al top, al principio top es nulo, pero que pasa cuando hagamos un push:

TOP->[X]->null

Si volvemos a hacer un push, debe de quedar así:


TOP->[Y]->[X]-> 

Es decir, tenemos que hacer que top sea igual al Nodo mas nuevo, y que el siguiente nodo del nodo mas nueva sea el que anteriormente era el top.

Cuando hacemos un pop, debemos de sacar de la pila al top, y el nodo siguiente del top se convertirá en nuevo nodo.


A continuación, el código:


Clase Nodo:





Clase Pila:



No hay comentarios:

Publicar un comentario