逆波兰计算器
5.1、计算器说明
- 输入一个逆波兰表达式(后缀表达式), 使用栈(Stack),计算其结果 支持小括号和多位数整数,
- 因为这里我们主要讲的是数据结构, 因此计算器进行简化, 只支持对整数的计算
5.2、代码思路
计算后缀表达式无需考虑运算符优先级问题,所以只需要一个数栈即可
分为两种情况:
- 遇到数:压入数栈
- 遇到运算符:从数栈中弹出两个数,进行计算,计算结果压入数栈
5.3、代码实现
- 出栈的两个数:num2 和 num1
- num2 先出栈,所以 num2 是减数或除数
- num1 后出栈,所以 num1 是被减数或被除数
上代码:
public class PolandNotation {
public static void main(String[] args) {
//先定义给逆波兰表达式
// 4 * 5 - 8 + 60 + 8 / 2 => 4 5 * 8 - 60 + 8 2 / +
//说明为了方便,逆波兰表达式 的数字和符号使用空格隔开
String suffixExpression = "4 5 * 8 - 60 + 8 2 / +"; // 76
//思路
//1. 先将逆波兰表达式 => 放到ArrayList中
//2. 将 ArrayList 传递给一个方法,遍历 ArrayList 配合栈 完成计算
List<String> list = getListString(suffixExpression);
System.out.println(