Sie sind auf Seite 1von 2

Pila (informtica)

Una pila (stack en ingls) es una lista ordenada o estructura de datos en la que el modo de acceso a
sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir)
que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el
rea de informtica debido a su simplicidad y ordenacin implcita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un
objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento
apilado.
En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto
apilado (denominado TOS, Top of Stack en ingls). La operacin retirar permite la obtencin de
este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con
anterioridad), que pasa a ser el nuevo TOS.
Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre una
pila de platos, y una operacin retirar a retirarlo.
Las pilas suelen emplearse en los siguientes contextos:
Evaluacin de expresiones en notacin postfija (notacin polaca inversa).
Reconocedores sintcticos de lenguajes independientes del contexto
Implementacin de recursividad.

Operaciones
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las
implementaciones modernas de las pilas se suelen aadir ms de uso habitual.

Crear: se crea la pila vaca. (constructor)


Tamao: regresa el nmero de elementos de la pila. (size)
Apilar: se aade un elemento a la pila.(push)
Desapilar: se elimina el elemento frontal de la pila.(pop)
Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
Vaca: devuelve cierto si la pila est sin elementos o falso en caso de que contenga uno.
(empty).

Expresin de evaluacin y anlisis sintctico


Se calcula empleando la notacin polaca inversa utilizando una estructura de pila para los posibles
valores. Las expresiones pueden ser representadas en prefijo, infijo, postfijo. La conversin de una
forma de la expresin a otra forma necesita de una pila. Muchos compiladores utilizan una pila para
analizar la sintaxis de las expresiones, bloques de programa, etc. Antes de traducir el cdigo de bajo

nivel. La mayora de los lenguajes de programacin son de contexto libre de los idiomas que les
permite ser analizados con mquinas basadas en la pila.
Por ejemplo, el clculo: ((1 + 2) * 4) + 3, puede ser anotado como en notacin postfija con la
ventaja de no prevalecer las normas y los parntesis necesario:
12+4*3+
La expresin es evaluada de izquierda a derecha utilizando una pila:
Apilar cuando se enfrentan a un operando y
Desafilar dos operandos y evaluar el valor cuando se enfrentan a una operacin.
Apilar el resultado.
De la siguiente manera (la Pila se muestra despus de que la operacin se haya llevado a cabo):
ENTRADA
1
2
+
4
*
3
+

OPERACIN
Apilar operando
Apilar operando
Aadir
Apilar operando
Multiplicar
Apilar operando
Aadir

PILA
1
1, 2
3
3, 4
12
12, 3
15

Das könnte Ihnen auch gefallen