“逆波兰表达式”完整代码实现

本文介绍了如何使用栈实现逆波兰表达式计算器。计算器仅处理整数,支持小括号,简化了运算符优先级问题。通过遇到数字时压栈,遇到运算符时弹出两个数进行计算,将结果再压栈的方式实现。
摘要由CSDN通过智能技术生成

逆波兰计算器

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(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值