Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <iostream.h>
#include <stdlib.h>
#define STACKSIZE 100
#define FALSE 0
#define TRUE 1
struct stack
{
int top;
int items [STACKSIZE];
};
typedef struct stack *STACKPTR;
// pila vacía
int empty (STACKPTR ps);
// inicializar pila
void init(STACKPTR ps):
// pila vacía
Int empty (STACKPTR ps)
{
if (ps—>top = = 1)
return TRUE;
else
return FALSE;
}
NOTACION POLACA
EJEMPLO
EVALUAR UNA EXPRESIÓN ARITMETICA EN POSTFIJA
Sea la expresión aritmética:
4. 6. + 3 7. - * 5 /
struct stack
{
Int top;
float items [STACSIZE];
};
typedef struct stack *STACKPTR;
// Pila vacía
int empty (STACKPTR ps );
// eliminar elementos de la pila
float pop (STACKPTR ps);
// programa principal
void main ( )
{
char s [MAXIMO];
cout << “ n De la cadena de caracteres de postfija :”;
gets ( s );
cout << “ valor : “ << eval ( s) << endl;;
}
// evaluar la expresión
float eval (char s ( ))
{
struct stack ps;
float op1, op2, x, y;
int i = 0;
char c;
init (&ps);
while (s ( I ) 0 ` 0 `)
{
c = s ( i ++ );
If (! is_operador (c))
{
x = c - `0 `;
push (&ps, x);
}
else
{
op2 = pop (&ps);
op1 = pop (&ps);
y = valor (op1,op2,c);
push (&ps y)
}
}
return pop (&ps);
}