文章
7
粉丝
211
获赞
10
访问
37.0k
#include<iostream>
#include<string>
#include<algorithm>
#include<stack>
#include<vector>
using namespace std;
const string temp = "+-*/^";
int getPri(char c) { // 获取优先级0 1 2 3
return temp.find(c) / 2;
}
bool cmpPri(char a, char b) { // 比较优先级
return getPri(a) >= getPri(b);
}
void print_(vector<string> vt) { // 打印
int len = vt.size();
for (int i = 0; i < len - 1; i++)
cout << vt[i] << " ";
cout << vt[len - 1] << endl;
}
void solve(vector<string> vt) { // 计算后缀表达式
print_(vt);
int len = vt.size();
int num1, num2, result;
stack<string> st;
char op;
int i = 0, pos;
while (i < len) {
if (temp.find(vt[i]) != -1) { // 是操作符
num1 = atoi(vt[i - 2].data());
num2 = atoi(vt[i - 1].data()); // 两个操作数
op = vt[i].data()[0];
switch (op) {
case '+': result = num1 + num2; break;
case '-':result = num1 - num2; break;
case '*':result = num1 * num2;...
登录后发布评论
暂无评论,来抢沙发