#include
#include
#include
#include
#define MaxSize 99
//输入的时候一定要输入英文,中文的符号可能算错
char calc[MaxSize],expr[MaxSize],repr[MaxSize],s1[MaxSize];//calc存储中缀表达式,expr为存放前缀表达式的字符串,repr为存放后缀表达式的字符串
int i,t;
struct {
char data[MaxSize];
int top;
} Sym,sta;//存符号
struct {
double data[MaxSize];
int top;
} Num;//存数值
void InitStack() {//初始化
Sym.top=Num.top=sta.top=-1;
}
void SymPush() {
if(Sym.top=0) {
expr[++t]=Sym.data[Sym.top--];
} else {
printf("Sym栈空n");
}
}
void NumPush() {
if(Num.top=0) {
switch(repr[i]) {
case '+':
Num.data[Num.top-1]=Num.data[Num.top-1]+Num.data[Num.top];
break;
case '-':
Num.data[Num.top-1]=Num.data[Num.top-1]-Num.data[Num.top];
break;
case '*':
Num.data[Num.top-1]=Num.data[Num.top-1]*Num.data[Num.top];
break;
case '/':
Num.data[Num.top-1]=Num.data[Num.top-1]/Num.data[Num.top];
break;
}
Num.top--;
}
else {
printf("Num栈空n");
}}
char staPop()
{
char ch;
if(sta.top>=0) {
ch=sta.data[sta.top];
} else {
printf("sta栈空n");
}
return ch;}
void staPush() {
if(sta.top