后缀表达式------一堆大白话

后缀表达式(笔试遇到这个东西,查查记录一下)

m(n+p)-q 👉 mnp+q-

利用栈,从左到右扫描:
1.遇到数字直接输出
2.遇到运算符,若栈为空,则直接进栈,若栈不为空,和栈顶符号比较优先级(乘除大于加减),该运算符优先级低于栈顶符号优先级,则栈中元素依次出栈,并将该元素入栈。
3.遇到左括号入栈
4.遇到右括号,栈中元素出栈,知道弹出的为左括号,括号在后缀表达式中输出
5.最后将栈中元素依次出栈

以上式为例:(以【】代表栈)
m*(n+p)-q
第一个元素m直接输出
后缀表达式:m
栈 【】

第二个元素*,栈为空,入栈【*】
后缀表达式:m
栈 【*】

第三个元素左括号入栈
后缀表达式:m
栈 【*】

第四个元素n输出
后缀表达式:mn
栈 【* (】

第五个元素+,栈顶元素为(,(我认为括号应该是遇到右括号才比较优先级),所以入栈
后缀表达式:mn
栈 【* ( +】

第六个元素p,输出
后缀表达式:mnp
栈 【*】

第七个元素右括号,将栈中元素左括号之后的元素依次出栈
后缀表达式:mnp+
栈 【*】

第八个元素-,优先级低于*,所以栈中元素*出栈,-入栈
后缀表达式:mnp+*
栈 【-】

第九个元素q,输出
后缀表达式:mnp+*q
栈 【-】

最后输出栈中元素
后缀表达式:mnp+*q-

请各位大佬指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值