Java实现中缀表达式转换成逆波兰表达式(后缀表达式)

本文详细介绍了如何使用Java将中缀表达式转换为逆波兰表达式,通过两个栈来实现,一个用于存放运算符,一个用于输出逆波兰表达式。在遍历输入表达式时,按照运算符的优先级和括号规则进行处理,最终得到后缀表达式。同时提供了Java代码实现和运行结果。
摘要由CSDN通过智能技术生成

实现基本步骤

  1.  用数组接收输入的原始表达式。
  2.  用两个栈来进行操作,一个栈用来存放运算符,另一个栈用来存放输出的逆波兰表达式。
  3.  依次遍历原始表达式,再根据遍历的元素分别进行操作。
  4.  如果遍历为数字,直接输出到逆波兰表达式栈中。
  5.  如果遍历为“(”,入运算符栈里。
  6.  如果遍历为“)”,则依次把运算符栈栈顶的运算符加入逆波兰表达式栈中,直到出现“(”,接着从栈中删除“(”,逆波兰表达式中不存在括号。
  7.  如果遍历为除括号外的其他运算符(+,-,*,/), 当其优先级高于除“(”以外的栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先级低的或者遇到了一个左括号为止,然后将其自身压入栈中(先出后入),弹出的运算符加入逆波兰表达式栈中。
  8.  遍历原始表达式结束后,将运算符栈中的所有运算符出栈,依次入逆波兰表达式栈中。
  9.   最后,依次遍历输出存放逆波兰表达式的数组,就得到了逆波兰表达式。

Java代码实现

import java.util.Scanner;

public class RPN {
    private char[] list;//存放自己输入的表达式(中缀表达式)
    private char[] sign;//存放运算符的栈
    private char[] rpnList;//存放逆波兰表达式的栈
    private int rpnTop,signTop;//指
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值