思路:
两个栈,操作数栈和运算符栈
当扫描到操作数,压入操作数栈
当扫描到运算符,则比较当前字符优先级,和运算符栈顶元素的优先级,如果栈顶的优先级高,需要先运算,应该弹栈运算,直到当前运算符的优先级高,将当前字符压入栈
每弹出一个运算符,操作数栈应该弹出2个数,进行运算,将结果压入操作数栈
带注释代码
#include<bits/stdc++.h>
using namespace std;
map<char,int> m=
{
{'+',2},{'-',2},{'*',1},{'/',1},
};
...