中序表达式 转换为 后(前)序表达式的快捷方法(考研的快捷办法)

换换为后序方法:

中序表达式: a+b*(c+d/e)
按计算顺序加上括号 :(a+(b*(c+(d/e))))
把运算符放到对应括号后面 :(a(b(c(de)/)+)*)+
去掉括号 : abcde/+*+

换换为前序方法:
与上面的方法类似

中序表达式: a+b*(c+d/e)
按计算顺序加上括号 :(a+(b*(c+(d/e))))
把运算符放到对应括号前面 :+(a*(b+(c/(de))))
去掉括号 : +*+/abcde

总结就给每一次运算找到对应的对象,并将之括号起来,然后将运算符号提出来就好了,放在前面和后面


1、为什么要把中缀表达式转化为后缀,前缀?

计算机没法计算带有括号,以及区分优先级的表达式,或者说很难计算。使用后缀,前缀,消除了括号和优先级。

2、计算机如何计算后缀,前缀表达式?

计算后缀:从左到右遍历后缀表达式,遇到操作数,放进栈,遇到操作符,栈顶两个数出栈,进行运算,运算结果放进栈,直到读完后缀表达式。

计算前缀:从左到右遍历前缀表达式,遇到操作符,放进栈,遇到操作数,查看栈顶,栈顶为操作符,放进栈,栈顶为操作数,取出栈顶操作数和操作符,进行运算,运算后继续判断栈顶的情况。

3、中缀表达式如何转化为后缀,前缀表达式?

转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于等于当前操作符的操作符,当前操作符进栈。

转化为前缀:从右到左遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于等于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于当前操作符的操作符,当前操作符进栈。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我来为您解答。以下是将中序表达式转换为后表达式的堆栈方式图解: 1. 创建一个空栈和一个空的输出队列。 2. 从左到右扫描中序表达式。 3. 如果扫描的元素是一个操作数,将其添加到输出队列的末尾。 4. 如果扫描的元素是一个左括号,将其压入栈中。 5. 如果扫描的元素是一个右括号,则将栈中的元素弹出并添加到输出队列,直到遇到左括号。左括号不会被添加到输出队列中,也不会被弹出。 6. 如果扫描的元素是一个运算符,首先将其与栈顶元素进行比较。 1. 如果栈顶元素的优先级比该运算符的优先级高或相等,则将栈顶元素弹出并添加到输出队列中,直到栈顶元素的优先级低于该运算符。 2. 将该运算符压入栈中。 7. 当扫描完成后,将栈中剩余的元素弹出并添加到输出队列中。 8. 输出队列中的元素即为后表达式。 下面是一个具体的例子: 假设要将中序表达式 "5 + ((1 + 2) * 4) - 3" 转换为后表达式。 1. 创建一个空栈和一个空的输出队列。 2. 从左到右扫描中序表达式。 - 5:操作数,添加到输出队列中。 - +:运算符,压入栈中。 - (:左括号,压入栈中。 - (:左括号,压入栈中。 - 1:操作数,添加到输出队列中。 - +:运算符,压入栈中。 - 2:操作数,添加到输出队列中。 - ):右括号,将栈中的元素弹出并添加到输出队列中,直到遇到左括号。输出队列变为 "1 2 + "。 - *:运算符,栈顶运算符的优先级高于该运算符,将栈顶元素弹出并添加到输出队列中。输出队列变为 "1 2 + ". - 4:操作数,添加到输出队列中。输出队列变为 "1 2 + 4 ". - ):右括号,将栈中的元素弹出并添加到输出队列中,直到遇到左括号。输出队列变为 "1 2 + 4 * ". - -:运算符,栈顶运算符的优先级低于该运算符,将该运算符压入栈中。 - 3:操作数,添加到输出队列中。输出队列变为 "1 2 + 4 * 3 ". 3. 当扫描完成后,将栈中剩余的元素弹出并添加到输出队列中。栈顶元素为减号,弹出并添加到输出队列中。输出队列变为 "1 2 + 4 * 3 - "。 4. 输出队列中的元素即为后表达式,为 "1 2 + 4 * 3 -"。 希望这个图解能够解决您的问题。如果您还有其他问题,可以继续问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值