数据结构笔记6-栈的应用之前中后缀part2

中缀转后缀例子:8-(3+5)*(5-6/2)的后缀表达式是8 3 5 + 5  6 2 / - * -
表达式生成过程:
1)8 3 5.                            |#-(+
2)8 3 5.+ 5 6 2                  |# - * ( - /
3)8 3 5.+ 5 6 2  / -             |# - * 
4)8 3 5.+ 5 6 2  / -  * -       |# 

中缀表达式转为后缀表达式规则如下:
        设操作符s,初始化为空栈,压入优先级最低的操作符‘#’。
        对中缀表达式从左向右扫描:遇操作数,直接写出来;遇操作符(记作w),分以下情况,直至表达式扫描完毕。

1)w为一般操作符(+,-,*,/),要与栈顶操作符比较优先级,若w优先级高于栈顶操作符,则入栈;否则,栈顶运算符退栈到结果上,w再与新栈顶操作符作上述比较处理,重复(1),直至w优先级高时入栈

2)w为左括号,w入栈

3)w为右括号,操作符栈依次退栈并进入到结果,直到碰到左括号为止,左括号退栈不进入结果,右括号也丢掉,达到结果中消除括号的目的。

4)w为‘#’,表示中缀表达式结束,操作符栈中元素依次退栈进入到结果,直至碰到‘#’,退栈,整个操作结束。

这里,再介绍一种简单方法。中缀表达式转为后缀表达式有三步:
首先,将中缀表达式中所有的子表达式按计算规则用嵌套括号括起来;其次,顺序将每对括号中的运算符移到相应括号的后面;最后,删除所有括号。
例如:1.加括号:(8—((3+5)*(5-(6/2))))
            2.将运算符移到相应的括号后:(8((35)+(5(62)/)-)*)—
            3.删除括号:835+562/—*—
同样可将中缀转为前缀,差别是第二步,即将运算符移至相应的括号左侧。

1、对于表达式来说,可以画树,前缀-〉前序;中缀-〉中序;后缀-〉后序。
2、还可以,就根据平时的计算,只不过后缀就把符号放字母后面,把这块看成一个整块,然后继续计算,符号放后;前缀反之亦然。

3、还有一个检查的小妙招,就是括号后是操作符号优先次序一直上升,用这招检查选择题超快。

4.后缀表达式是运算符写在对应的操作数的后面,注意,运算数的顺序是不变的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值