数据结构实验之栈三:后缀式求值
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!
代码:
#include <stdio.h> #include <stack> #include <string.h> #include <algorithm> using namespace std; int main() { char ch; stack<int>s; int dd, ff; while(scanf("%c", &ch)&& ch!='#') { if(ch>='0' && ch<='9') { s.push(ch-48); } else { if(ch=='*') { dd=s.top(); s.pop(); ff=s.top(); s.pop(); dd=ff*dd; s.push(dd); } if(ch=='/') { dd=s.top(); s.pop(); ff=s.top(); s.pop(); dd=ff/dd; s.push(dd); } if(ch=='+') { dd=s.top(); s.pop(); ff=s.top(); s.pop(); dd=ff+dd; s.push(dd); } if(ch=='-') { dd=s.top(); s.pop(); ff=s.top(); s.pop(); dd=ff-dd; s.push(dd); } } } printf("%d ", s.top()); return 0; }