中缀表达式转后缀表达式/逆波兰表达式详细步骤 + java代码实现

本文介绍了中缀表达式转换为后缀表达式(逆波兰表达式)的详细步骤,并提供了一个Java代码示例。通过将中缀表达式加括号、移除运算符到右侧,最终得到后缀表达式,便于计算机高效计算。逆波兰表达式求值过程中,使用栈存储数字,按运算符进行计算。
摘要由CSDN通过智能技术生成

对于一个简单的表达式 3+4-5,我们人是有思维能力的,能根据操作符的位置,以及操作符的优先级别能算出该表达式的结果。但是计算机怎么算?
  计算机必须要向前(从左到右)来读取操作数和操作符,等到读取足够的信息来执行一个运算时,找到两个操作数和一个操作符进行运算,有时候如果后面是更高级别的操作符或者括号时,就必须推迟运算,必须要解析到后面级别高的运算,然后回头来执行前面的运算。我们发现这个过程是极其繁琐的,而计算机是一个机器,只认识高低电平,想要完成一个简单表达式的计算,我们可能要设计出很复杂的逻辑电路来控制计算过程,那更不用说很复杂的算术表达式,所以这样来解析算术表达式是不合理的,那么我们应该采取什么办法呢?
  请大家先看看什么是前缀表达式,中缀表达式,后缀表达式:这三种表达式其实就是算术表达式的三种写法,以 3+4-5为例

①、前缀表达式:操作符在操作数的前面,比如 + -5 4 3

②、中缀表达式:操作符在操作数的中间,这也是人类最容易识别的算术表达式 3 + 4 - 5

③、后缀表达式:操作符在操作数的后面,比如 3 4 + 5 -
  上面我们讲的人是如何解析算术表达式的,也就是解析中缀表达式,这是人最容易识别的,但是计算机不容易识别,计算机容易识别的是前缀表达式和后缀表达式,将中缀表达式转换为前缀表达式或者后缀表达式之后,计算机能很快计算出表达式的值,那么中缀表达式如何转换为后缀表达式呢?
  接下来我们以1 + ((2 +3)* 4)- 5为例,详细探究一下这个过程。
  
第一步,先将每一部分的表达式都加上括号。
在这里插入图片描述

第二步,将每部分括号内的运算符拉到相应括号的右侧。
在这里插入图片描述

最后,去掉所有括号,就可以得到后缀表达式。
在这里插入图片描述
逆波兰表达式是一种后缀表达式,它将运算符放置在操作数之后。逆波兰表达式求值的过程是从左到右扫描表达式,遇到数字时将数字压入栈中,遇到运算符时弹出栈顶的两个数字进行运算,并将结果压入栈中。最终栈中只剩下一个数字,即为表达式的值。

以下是逆波兰表达式求值的Java代码和详细讲解:

具体操作步骤如下:
1.创建一个栈来存储数字。
2.从左到右遍历逆波兰表达式中的每个元素。
3.如果当前元素是运算符,则从栈中弹出两个数字进行运算,并

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值