La pila es una lista de elementos caracterizada porque las operaciones de inserción y
eliminación de elementos se realizan solamente en un extremo de la estructura. El extremo
donde se realizan estas operaciones se denomina habitualmente cima.
En general, una pila tiene su utilidad cuando interesa recuperar la última información
generada (el estado inmediatamente anterior).
INSERTAR
En primer lugar hay que decir que esta
operación es muy comúnmente denominada push.
La inserción en una pila se realiza en su
cima, considerando la cima como el último elemento insertado. Esta es una de
las particularidades de las pilas, mientras el resto de estructuras de datos
lineales se representan gráficamente en horizontal, las pilas se representan
verticalmente. Por esta razón es por lo que se habla de cima de la pila y no de
cola de la cima. Aunque en el fondo sea lo mismo, el último elemento de la
estructura de datos.
Las operaciones a realizar para realizar
la inserción en la pila son muy simples, hacer que el nuevo nodo apunte a la
cima anterior, y definir el nuevo nodo como cima de la pila.
Vamos a ver un ejemplo de una inserción:
Al insertar sobre esta pila el elemento
0, la pila resultante sería:
BORRAR
Esta operación es normalmente conocida
como pop.
Cuando se elimina un elemento de la pila,
el elemento que se borra es el elemento situado en la cima de la pila, el que
menos tiempo lleva en la estructura.
Las operaciones a realizar son muy
simples, avanzar el puntero que apunta a la cima y extraer la cima anterior.
Si aplicamos la operación pop a la pila
de 4 elementos representada arriba el resultado sería:
Las pilas son muy usadas en
procedimientos recursivos, tales como algoritmos de backtracking,
evaluación de expresiones algebraicas, recorridos por niveles de árboles, entre otros.
Las operaciones que se presentan en esta
aplicación son las siguientes:
-Push: Si se pulsa este botón se mostrará un
diálogo a través del cual se podrá especificar el valor del nuevo nodo que se
insertará en la pila.
-Pop: Extrae el nodo situado en la cima de
la pila.
-Vaciar pila: Elimina todos los elementos
de la pila.
Tenemos un montón de platos: Cuando se quiere introducir un
nuevo plato, éste se coloca en la posición más accesible, encima del último plato. Cuando se
coge un plato, éste se extrae, igualmente, del punto más accesible, el último que se ha
introducido. O, si somos más estrictos, otro ejemplo sería una caja llena de libros.
Las paredes
de la caja impiden acceder libremente a su contenido y sólo se puede acceder al libro que está
más arriba en la caja. Al almacenar o extraer un libro, sólo es posible actuar sobre ese primer
libro. No es posible siquiera saber el número total de libros guardados en la pila.
Sólo se
conocerá el número de elementos de la pila de libros si previamente los sacamos hasta vaciar
la caja.
Ejemplo 2.
Otro ejemplo natural de la aplicación de la estructura pila aparece durante la ejecución de un
programa de ordenador, en la forma en que la máquina procesa las llamadas a las funciones.
Cada llamada a una función hace que el sistema almacene toda la información asociada con
esa función (parámetros, variables, constantes, dirección de retorno, etc...) de forma
independiente a otras funciones y permitiendo que unas funciones puedan invocar a otras
distintas (o a si mismas) y que toda esa información almacenada pueda ser recuperada
convenientemente cuando corresponda.
Como durante la ejecución de un programa sólo se puede estar ejecutando una función (asumiendo que no existe ejecución concurrente dentro
del programa), esto quiere decir que sólo es necesario que sean accesibles los datos de la
función activa (la que está en la cima de llamadas). De ahí que una estructura muy apropiada
para este fin sea la estructura pila.







