Está en la página 1de 4

ESTRUCTURA DE DATOS: PILAS ESTRUCTURAS DE TIPO LIFO (LAST INPUT FIRST OUTPUT: ULTIMO EN INGRESAR, PRIMERO EN SALIR)

PUSH "Meter"

POP "Sacar"

push(P, "a") push(P, "b") push(P, "c") pop(p) ... "c"

TOP .......

b a
1 ; n==0||n==1

FAC(n) = n*FAC(n-1) ; n>1

FAC(4) = 4 * FAC(3) 3 * FAC(2)

Area de Control

Area de Datos

n=1 n=2 n=3 n=4

1 2*FAC(1) 3*FAC(2) 4*FAC(3) Struct Pila { int tamao; int top;

Pila P:

2
Top(P)

Tamao de la Pila

push(P, "a") push(P, "b") push(P, "f") pop()

char datos[50];

};

PRIMITIVAS DE ACCESO void PUSH(Pila &P, char xdato) { if(P.top<P.tamao) { P.top++; char POP(Pila &P) { char xdato=''; if(P.top>0) { xdato = P.datos[P.top]; P.top--;

P.datos[P.top] = xdato; } else Messagebox::Show("Pila llena deja pa otro momento, pe ..."; } char TOP(Pila P) { char xdato=''; if(P.top>0) { xdato = P.datos[P.top]; } else MessageBopx::Show("Error..Pila vacia "; return xdato; } APPLICATION EXPRESIONES ARITMETICAS Combinacion de variables (identificadores), operadores, funciones, etc. OPERADOR ^ *, / +,SIGNIFICADO POTENCIA MULTIPL; DIVIS SUMA, RESTA PRIORIDAD MUY ALTA ALTA MEDIA

} else MessageBopx::Show("Error..Pila va return xdato; } void Inicializar(Pila &P) { P.tamao=50; P.top=-1; for(int k=1; k<=50; k++) P.datos[k]=''; }

OBSERVACIONES Los ( ) tienen maxima prioridad. Si la expresion tuviera ( ), esta se ejecutaria primero. Ejemplo: Escribir la expresion en VC++ X * A ^ 2 +2 P+1 Solucion expresion infix expresion prefix expresion postfix ( X* A ^ 2 + 2) / ( P + 1) /+*X^A22+P1 XA2^*2+P1+/ EXPRESIONES CON DIVERSAS NOTACIONES EXPRESIONES INFIX (INFIJAS) EXPRESIONES PREFIX (PREFIJAS) EXPRESIONES POSTFIX (POSTFIJAS)

A+B + AB AB+

MERO EN SALIR)

FAC(4) 1 2 6 24

P.datos[P.top];

Bopx::Show("Error..Pila vacia ";

1; k<=50; k++)