中缀表达式转后缀表达式

中缀转后缀的手算方法

摘要:中缀表达式与后缀表达式简单介绍
在这里插入图片描述

1.规则:
1):确定中缀表达式中各个运算符的运算顺序
2):选择下一个运算符,按照【左操作数 右操作数 运算符】的方式组合一个新的操作数,直到所有运算符被处理完。

2.举例:
在这里插入图片描述
3.补充
上图中的两种方式都是正确的中缀表达式转后缀表达式,造成两个后缀表达式不相同的原因是运算符的运算顺序不同,根据算法的特性(确定性)我们可自行规定一个原则,即“左优先”原则,只要左边的运算符能先计算,就优先计算左边。

中缀转后缀的机算方法

初始化一个栈,用于保存暂时还不能确定运算顺序的运算符。
从左到右处理各个元素,直到末尾。可能遇到的三种情况:
(1):遇到操作数(举例:”A B C …“)。直到加入后缀表达式。
(2):遇到界限符(举例:" ( ) [ ] { }… “)。遇到“( ”直接入栈,遇到“ )”则依次弹出栈内运算符并输出到后缀表达式,直到弹出“( ”为止。 注意:“( " " ) “符合不用加入(写入)后缀表达式中。
(3):遇到运算符(举例:” + - * / …”)。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并输出到后缀表达式,若遇到”( “ 或栈空 则不出栈,之后再把当前运算符入栈。

遵从”左优先“原则
步骤解析:从最左边开始遍历
1.遇到第一个操作数输出: A (当前后缀表达式:A )
2.遇到运算符” + “ 此时栈为空,则直接进行入栈操作
3.遇到第二个操作数输出:B (当前后缀表达式:AB )
4.遇到运算符” * “ 此时栈中的运算符 ” +“ 的优先级低于当前运算符“ * ”则不出栈,将当前运算符“ * ” 入栈。
5.遇到界限符“ ( ” 直接入栈。
6.遇到第三个操作数输出:C(当前后缀表达式:ABC )
7.遇到运算符“ - ” 此时上一个入栈的是界限符“ ( ” 则直接进行入栈操作
8.遇到第四个操作数输出:D(当前后缀表达式:ABCD)
9.遇到界限符“ ) ”则依次弹出栈内的运算符,直到遇到“ ( ” 。(当前后缀表达式:ABCD-)
10遇到运算符" - " ,则弹出栈中优先级高于或等于 当前运算符的所有运算符 (当前后缀表达式:ABCD-*+)之后再将” - "当前运算符入栈。
11遇到第五个操作数输出:E
…之后的就可自行解决了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值