Para el manejo de los datos cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.En cada momento solamente se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés).Dos principios importantes son ilustrados por esta metáfora: únicamente se accede al plato que se encuentra en la parte superior (el último en depositarse), y el resto de platos de la pila permanecen ocultos.Habitualmente, junto a las dos operaciones básicas de apilar y desapilar (push, pop), las pilas puede implementar otra serie de funciones: Una pila puede implementarse fácilmente, ya sea mediante una matriz o una lista enlazada.Lo que identifica a una estructura de datos como una pila en cualquier caso no es su estructura sino su interfaz: al usuario solamente se le permite colocar y extraer datos en el modo que se espera de una pila y algunas otras operaciones auxiliares.Algunos microcontroladores, por ejemplo algunos PICs, tienen un fondo fijo de pila que no es directamente accesible.En LISP no hay necesidad de aplicar la pila, puesto que las funciones apilar y desapilar están disponibles para cualquier lista.Adobe PostScript también está diseñada en torno a una pila que se encuentra directamente visible y manipuladas por el programador.Se calcula empleando la notación polaca inversa utilizando una estructura de pila para almacenar temporalmente los valores.Pila es una forma importante de apoyar llamadas anidadas o a funciones recursivas.Algunos lenguajes de programación utilizan la pila para almacenar datos que son locales a un procedimiento.Ejemplos de búsqueda exhaustiva métodos son fuerza bruta y backtraking.Ejemplos de búsqueda óptima a explorar métodos,son branch and bound y soluciones heurísticas.Todos estos algoritmos utilizan pilas para recordar la búsqueda de nodos que se han observado, pero no explorados aún.La única alternativa al uso de una pila es utilizar la recursividad y dejar que el compilador sea recursivo (pero en este caso el compilador todavía está utilizando una pila interna).Por ejemplo, algunos lenguajes de programación usan una misma pila para almacenar los datos para un procedimiento y el enlace que permite retornar a su invocador.Esta técnica usada de forma maliciosa (es similar, pero en otro ámbito al buffer overflow) permitiría a un atacante modificar el funcionamiento normal de nuestro programa y nuestro sistema, y es al menos una técnica útil si no lo evitamos en lenguajes muy populares como el ejemplo C++.
Pilas para niños
Diagrama de flujo para resolver una expresión en notación postfija