数据结构实验之栈三:后缀式求值
Time Limit: 1000MS Memory limit: 65536K
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
#include <iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<malloc.h> #include<stack> using namespace std; int main() { char str[1001]; stack<int>s; cin>>str; int a,b,c; for(int i=0; str[i]!='#'; i++) { if(str[i]>='0'&&str[i]<='9') s.push(str[i]-48); else { if(str[i]=='+') { a=s.top(); s.pop(); b=s.top(); s.pop(); c=a+b; s.push(c); } if(str[i]=='-') { a=s.top(); s.pop(); b=s.top(); s.pop(); c=b-a; s.push(c); } if(str[i]=='*') { a=s.top(); s.pop(); b=s.top(); s.pop(); c=a*b; s.push(c); } if(str[i]=='/') { a=s.top(); s.pop(); b=s.top(); s.pop(); c=b/a; s.push(c); } } } cout<<s.top()<<endl; }