#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 30
typedef struct
{
int num;
int tag;
char ch;
}data;
typedef struct
{
data *base;
data *top;
}Stack;
typedef struct
{
char *base;
char *top;
}Cstack;
typedef struct
{
double *base;
double *top;
}Istack;
int Initstack(Stack &CHAR);
int Initstack1(Cstack &OPTR);
int Initstack2(Istack &OPND);
int Create(Stack &CAHR);
int Push1(Cstack &OPTR,char c);
int Push2(Istack &OPND,double c);
int Pop1(Cstack &CHAR);
int Pop2(Cstack &OPTR,char &c);
int Pop3(Cstack &OPTR,char &theta);
int Pop4(Istack &OPND,double &c);
char Gettop1(Cstack &OPTR);
double Gettop2(Istack &OPND);
double Operate(double a,char c,double b);
char Precede(char c1,char c2);
double EvaluateExpreession();
void output1(Stack CHAR);
void output2(Cstack OPTR);
void output3(Istack OPND);
void main()
{
double a;
a=EvaluateExpreession();
printf("=%.2lf\n\n\n\n",a);
}
int Initstack(Stack &CHAR)
{
CHAR.base=(data *)malloc(2*STACK_INIT_SIZE*sizeof(data));
if(!CHAR.base)
return ERROR;
CHAR.top=CHAR.base;
return OK;
}
int Initstack1(Cstack &OPTR)