数据结构实验之栈三:后缀式求值
Time Limit: 1000MS Memory limit: 65536K
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
参考代码:
#include #include #include using namespace std; #include typedef struct node { int *data,top,base; }stack; void init (stack &s) { s.data=new int [10000]; s.top=s.base=0; } void push (stack &s,int m) { s.data[s.top]=m; s.top++; } int main() { ios::sync_with_stdio(false); string m; stack s; init (s); cin>>m; for (int i=0;m[i]!='#';i++) { if (m[i]=='*') { s.data[s.top-2]=s.data[s.top-1]*s.data[s.top-2]; s.top--; } else if (m[i]=='+') { s.data[s.top-2]=s.data[s.top-1]+s.data[s.top-2]; s.top--; } else if (m[i]=='/') { s.data[s.top-2]=s.data[s.top-2]/s.data[s.top-1]; s.top--; } else if (m[i]=='-') { s.data[s.top-2]=s.data[s.top-2]-s.data[s.top-1]; s.top--; } else { int x=m[i]-'0'; push (s,x); } } cout < <