首先需搞懂什么是后缀表达式,这个可以找一些视频会更容易理解,然后下面是具体的代码实现:
操作数在0-9之间且输入的字符串无空格,如“897*+63/+”,代码如下:
#include<bits/stdc++.h>
using namespace std;
int jisuan(int a, char c, int b)
{
switch (c)
{
case '+':return a + b;
case '-':return a - b;
case '*':return a * b;
case '/':return a / b;
}
}
int main()
{
string s;
stack<int> ss;
while (cin >> s)
{
for (char c : s)
{
if (isdigit(c) != 0) //c是数字
{
ss.push(c-'0'); //将字符c转换为数字c
continue;
}
else //c是操作符
{
int right = ss.top();
ss.pop();
int left = ss.top();
ss.pop();
ss.push(jisuan(left, c, right));
}
}
if (ss.size() == 1)
{
cout << ss.top() << endl;
ss.pop();
}
else
cout << "表达式不合法!" << endl;
}
}