基本思路
中缀表达式转后缀表达式
实现后缀表达式的计算
如果了解中缀转换为后缀的程序,以及了解计算后缀表达式的程序,那么该算法就会很容易,其实就是二者的结合,然后代码稍微做一点改变,基本思路不变。
1.初始化两个栈:操作数栈和运算符栈
2.若扫描到操作数,压入操作数栈
3.若扫描到运算符或界限符,按照“中缀转后缀”相同的逻辑压入运算符栈
每当弹出一个运算符,就需要弹出两个操作数执行相应的运算
代码
代码还是蛮复杂的,建议先搞懂:1.中缀表达式如何转为后缀表达式 2.如何计算后缀表达式 这两个问题,最后把这两个问题一结合,代码就有了。
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
//处理运算符的优先级
int getPripority(char ch){
int level=0;
switch(ch){
case '(':
level=1;
break;
case '+':
case '-':
level=2;
break;
case '*':
case '/':
level=3;
break;
default:
break;
}
return level;
}
//判断是否为数字
bool isNum(char ch){
if(ch>='0'&&ch