Está en la página 1de 18

PILAS

Una pila es una coleccin lineal o


estructura de datos en la que el modo de
acceso a sus elementos es de tipo LIFO
(Last In First Out, ltimo en entrar, primero
en salir) que permite almacenar y recuperar
datos.
PILAS
Por analoga con objetos cotidianos, una operacin
apilar equivaldra a colocar un plato sobre una pila
de platos, y una operacin retirar a retirarlo.
PILAS

Se aplica en multitud de aplicaciones en informtica


debido a su simplicidad y ordenacin implcita en la
propia estructura.

En cada momento slo se tiene acceso a la parte


superior de la pila, es decir, al ltimo objeto apilado.
La operacin retirar permite la obtencin de este
elemento, que es retirado de la pila permitiendo el
acceso al siguiente, que pasa a ser el tope de la pila.
PILAS
Las pilas se utilizan con gran frecuencia en el
mundo informtico. Por ejemplo, el mecanismo de
deshacer operaciones en un procesador de textos
suele implementarse utilizando una pila. A medida
que realizamos cambios en un documento (aadir
datos, borrar datos, realizar cambios de formato,
etc) el procesador de textos recuerda cada
operacin, insertando
PILAS
Una cierta representacin de la misma en la pila. Si
decidimos deshacer una operacin, el software de
procesamiento de textos extrae de la pila la
operacin mas recientemente realizada y la
invierte. Si decidimos deshacer otra operacin
mas, se extrae otro elemento de la pila.
PILAS
Utilizacin de pilas para la evaluacin de
expresiones postfijas.- Tradicionalmente las
expresiones aritmticas se escriben con notacin
infija, lo que quiere decir que el operador esta
situado entre los correspondientes operandos, de
la forma siguiente:
<operando> <operador> <operando>
PILAS
En una expresin postfija, el operador esta situado
despus de sus dos operandos:
<operando> <operando> <operador>
Por ejemplo:
69
Es equivalente a la expresin infija
69
Las expresiones postfijas son generalmente mas
fciles de evaluar que las expresiones infijas
PILAS
Por que no es necesario tener en cuenta ni reglas
de precedencia, ni parntesis.
El orden de los valores y de los operadores en la
expresin es suficiente para determinar el
resultado.
A menudo los compiladores de los lenguajes de
programacin en los entornos de ejecucin utilizan
expresiones postfijas en sus clculos internos.
PILAS
El proceso de evaluacin de una expresin postfija
se analiza de izquierda a derecha, hay que aplicar
cada operacin a los dos operandos
inmediatamente precedentes y sustituir el operador
por el resultado. Al final lo que nos quedara ser el
resultado total de la expresin.
4+5*2
452*+
4 10 +
14
PILAS
Otra expresin:
(3 * 4 (2 + 5)) * 4 /2
La expresin postfija ser:
34*25+-4*2/
12 2 5 + - 4 * 2 /
12 7 4 * 2 /
54*2/
20 2 /
10
PILAS
Como en la siguiente expresin:
4+5
A la hora de evaluar una expresin infija, podemos
utilizar las reglas de precedencia para determinar
el orden de evaluacin de los operadores. Por
ejemplo la expresin:
4+5*2
Da como resultado 14, y no 18 debido a la regla de
precedencia que afirma que en ausencia de
parntesis debe realizarse la multiplicacin antes
que la suma.
PILAS
Pilas que contienen direcciones de retorno.-
Cuando el cdigo llama a un mtodo, la direccin
de la primera instruccin que sigue a la llamada se
inserta en la parte superior de la pila de llamadas
de mtodos. Cuando el mtodo llamado ejecuta la
direccin de return, se saca la direccin de la parte
superior de la pila y la ejecucin continua en esa
direccin.
PILAS
Pila como tipo abstracto de datos
La pila es un contenedor de nodos y tiene dos
operaciones bsicas: push (apilar) y pop
(desapilar). 'Push' aade un nodo a la parte
superior de la pila, 'Pop' elimina y devuelve el nodo
actual superior de la pila.
PILAS
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.
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 vaca o falso en caso
contrario.
PILAS
Public class PilaArray{
Private int tope = -1;
Private int [ ] op ;
Public PilaArray (int maxelementos){
op = new int [maxelementos];
}
Public boolean estavacia() {
return tope == -1;
}
PILAS
Public int peek(){
If (tope < 0)
throw new java.util.EmptyStackException();
return op[tope];
}
Public void push (int a){
if (tope == 5)
System.out.println (pila llena);
op[++tope] = a;
}
PILAS
Public int pop(){
if (tope < 0)
throw new java.util.EmptyStackException();
return op[tope--];
}
Public static void main(String [] args){
PilaArray p = new PilaArray(5);
p.push(4);
p.push(10);
p.push(6);
p.push(1);
p.push(9);
PILAS
System.out.println(p.pop());
System.out.println(p.pop());
p.push(5);
System.out.println(p.pop());
System.out.println(p.pop());
}
}