欢迎登录北京林业大学OJ系统 http://www.bjfuacm.com
240基于栈的中缀算术表达式求值
描述 输入一个中缀算术表达式,求解表达式的值。运算符包括+、-、*、/、(、)、=,参加运算的数为double类型且为正数。(要求:直接针对中缀算术表达式进行计算,不能转换为后缀或前缀表达式再进行计算,只考虑二元运算即可。) 输入 多组数据,每组数据一行,对应一个算术表达式,每个表达式均以“=”结尾。当表达式只有一个“=”时,输入结束。参加运算的数为double类型。 输出 对于每组数据输出一行,为表达式的运算结果。输出保留两位小数。 输入样例 1 2+2= 20(4.5-3)= =* 输出样例 1 4.00 30.00
#include
using namespace std;
#define MAX 100
#define OK 0
#define ERROR -1
#define OVERFLOW -2
typedef struct
{
char *base;
char *top;
int stacksize;
}Stack1;
int InitStack1(Stack1 &S)
{
S.base=new char[MAX];
if(!S.base) return OVERFLOW;
S.top=S.base;
S.stacksize=MAX;
return OK;
}
int push1(Stack1 &S, char e)
{
if(S.top-S.base==S.stacksize)
return ERROR;
*S.top=e;
S.top++;
return OK;
}
int pop1(Stack1 &S)
{
if(S.top==S.base)
return ERROR;
S.top--;
return OK;
|