栈实现四则运算--逆波兰运算(后缀表达式)

本文介绍了如何使用栈进行四则运算,重点讲解了前缀、中缀和后缀(逆波兰)表达式的概念。通过示例阐述了后缀表达式的计算方法,并提供了代码实现,用于处理包含小数点的后缀表达式计算。下一部分将探讨如何将中缀表达式转换为后缀表达式及其关键点。
摘要由CSDN通过智能技术生成

飞行日记之数据结构与算法分析——栈与四则运算

本次举例说明如何利用栈来完成简单的四则运算。

四则运算的前缀、中缀和后缀表达式(逆波兰运算)
  • 前缀表达式计算方法:(3+4)x5-6 >>> - x + 3 4 5 6从右至左扫描,遇到数字则压入数栈,遇到运算符,弹出数栈顶两个数并作相应运算,计算结果入栈;重复上述过程直到前缀表达式最左端;
  • 中缀表达式计算方法:正常表达式即中缀表达式。
  • 后缀表达式计算方法:6 x(5 +(2 +3) x8) >>> 6 5 2 3 + 8 x + x从左到右扫描,遇到数字则压入数栈,遇到运算符,弹出数栈顶两个数并作相应运算,计算结果入栈;重复上述过程直到前缀表达式最右端;
  • 代码实现:通过给定的后缀表达式,利用栈完成计算(包括多位数和小数点,不包括负数);
package LeetCodeAQ;
import java.util.*;

public class PolandNotation {
	public static void main(String[] args) {
		//输入后缀表达式 每个数字和符号中间用 空格 隔开(1-2*3)+((5*3-1)*2-1)
	    String suffixExpression 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是一种数据结构,它可以存储一组元素,并支持在一端插入和删除元素。在四则运算中,可以使用栈实现表达式的求解。 表达式求解的基本思路是,将中缀表达式转换为后缀表达式,然后使用栈后缀表达式进行求解。 中缀表达式是人类常用的表达式格式,例如 1 + 2 * 3。后缀表达式是一种更适合计算机处理的表达式格式,也称为逆波兰表达式,例如 1 2 3 * +。 中缀表达式转换为后缀表达式的过程可以使用栈实现。具体步骤如下: 1. 新建一个空和一个空列表。 2. 从左到右扫描中缀表达式的每个元素。如果当前元素是数字,将其加入到列表中。 3. 如果当前元素是运算符,则将其弹出,直到顶元素的优先级低于或等于当前元素,并将弹出的元素加入到列表中。然后将当前元素入。 4. 如果当前元素是左括号,直接将其入。 5. 如果当前元素是右括号,则将顶元素弹出并加入到列表中,直到遇到左括号。左括号不加入列表,直接弹出。 6. 扫描完中缀表达式后,将中剩余的元素依次弹出并加入到列表中。 将中缀表达式转换为后缀表达式后,可以使用栈后缀表达式进行求解。具体步骤如下: 1. 新建一个空。 2. 从左到右扫描后缀表达式的每个元素。如果当前元素是数字,将其入。 3. 如果当前元素是运算符,则弹出顶的两个元素,并根据当前元素进行运算。将运算结果入。 4. 扫描完后缀表达式后,中剩余的元素即为表达式的最终结果。 使用栈实现四则运算还需要注意一些细节,例如运算符的优先级、括号的处理等。但基本思路就是如上所述。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值