Analicemos esto detenidamente, la pila de datos ahora tiene 3 elementos, el dato 0, dato 1 y dato 2, donde el dato 0 esta en el fondo de la pila y el dato 2 en el tope de la misma.
En un principio, la pila (representada con la línea azul) tuvo que estar vacía
Luego, si se fijan en el dibujo, si quieren insertar un dato deben de hacerlo por la parte que esta abierta ¿verdad? Pues se coloca ahí, y el dato 0 pasa a ser el fondo de la pila, es decir el primer elemento de esta, y como es el único dato dentro, también pasa a ser el tope de la pila quedando mas o menos así:
Luego, si queremos insertar otro dato, solo podemos hacerlo por la parte de arriba al igual que el dato 0, entonces al introducir el dato 1 quedaría así:
Ahora el tope de la pila es dato 1, y dato 0 sigue siendo el fondo y lo seguirá siendo hasta que se vacíe la pila. Naturalmente, si queremos introducir otro elemento a la pila, será como en los casos anteriores y quedará como en la primera imagen de esta entrada.
Si queremos obtener el dato 0, tenemos que apartar primero los elementos que están arriba de este, como si tuviésemos una pila de libros y queremos el que está hasta el fondo, si queremos los que están encima, debemos primero de apartar los libros que están encima de este o se caerán todos.
Al igual si queremos obtener el dato 1, al haber un dato 2, dato 3 o más encima, debemos primero deshacernos de los que están encima, bien, simplemente borrando los o pasándolos a otra pila.
La función para apilar un elemento en la estructura se le conoce como push() y la función para des-apilar se le conoce como pop(), también es posible toparse con la función peek() que es la que toma el valor del elemento del tope de la pila sin necesidad de borrarlo.
Las funciones push() y pop() son operaciones inversas entre si. |
En lenguajes de programación como C# se utilizan pilas como un tipo abstracto de datos ya establecido en lugar de usar arreglos, ya que son dinámicos y su tamaño puede cambiar en tiempo de ejecución y no en tiempo de compilación. A diferencia de Python, que todas sus variables son dinámicas y no se tiene el problema de la longitud de una estructura, ademas en Python no existen realmente las pilas, sino que se utilizan las listas y ciertas funciones para simular el comportamiento de una pila, de eso hablo en otra entrada: Pilas en Python.