“表达式求值”问题,两个核心关键点:
1.双栈:一个操作数栈,一个运算符栈;
2.运算符优先级:栈顶运算符和即将入栈的运算符的优先级比较:
如果栈顶的运算符优先级低,新运算符直接入栈
如果栈顶的运算符优先级高,先出栈计算,新运算符再入栈
题目:
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<stack>
#include<unordered_map>
using namespace std;
stack<int> num;//操作数栈
stack<char> op;//运算符栈
//定义优先级表
unordered_map<char, int> pr{ {'+', 1}, {'-', 1}, {