En días pasados hablamos acerca de las Colas o Queue las cuales siguen la filosofía FIFO (First In – First Out) o Primero en entrar – Primero en salir. Sin embargo, hoy hablaremos de las Pilas o Stack las cuales son un poco diferentes de las Colas, ya que éstas siguen la filosofía LIFO (Last In – First Out) o Último en entrar primero en salir.
Antes de entrar en detalle me gustaría explicar qué son las Pilas de una forma mas simple, para lo cual imaginaremos que tenemos varios platos sucios en casa y queremos lavarlos. Para empezar a lavarlos los tenemos que apilar para tenerlos todos juntos y cada vez que queramos un plato lo que haremos será tomar el de hasta arriba. Cuando terminamos de lavarlo tomamos el que sigue desde arriba y así hasta terminar; pero supongamos que antes de terminar de lavar llega otra persona y nos pone un plato en la pila de platos que ya tenemos, entonces el plato nuevo quedará hasta arriba. Cuando queramos lavar el siguiente plato tomaremos este último que nos acaban de dejar.
Si nos damos cuenta siempre tomamos el de hasta arriba y cuando entra un plato nuevo a la pila siempre entra por arriba.
Como podemos apreciar en la imagen anterior, cuando un elemento entra a la Pila siempre entra por la parte delantera colocándose hasta el principio.
Como podemos apreciar en la imagen anterior cuando un elemento sale de la Pila siempre sale el último elemento que entró.
Las pilas son estructuras de datos dinámicas que nos permiten agregar cuantos elementos queramos a la Pila, sin embargo esto no es del todo cierto ya que las Pilas pueden estar limitadas por el espacio en memoria que el programa tenga o que nosotros definamos el máximo de elementos que puede contener la Pila.
Utilidad de las Pilas:
Como programadores, el primer encuentro que tenemos con las Pilas pueden ser los Errores como StackOverFlow muy comunes cuando realizamos alguna función con recursividad, ya que las funciones cada vez que se llaman a sí mismas, guardan la posición en la que se quedaron ejecutando el programa, debido a que una vez que la función retorne, el programa deberá continuar ejecutándose donde se quedó.
Los compiladores también las utilizan para convertir las Cadenas Infijas a Posfijas (pero hablaremos de esto posteriormente).
Espero que esta información les sea de utilidad y si te gustó, por favor dale Like y compártelo ya que esto me ayudará a crear más y mejor material.
Es muy completo el artículo y muy bueno, gracias
Me alegro que el artículo sea de tu interés 🙂
me gusto bastante la publicación, en una pagina esta todo resumido y bien explicado
Gracias por el comentario Luis
¿la figura 2 no esta mal? sigue apareciendo “Nuevo 5”