csdn上看的一个中缀表达式快速便捷转前缀后缀表达式的方法

亲测可行,但不知道原理,欢迎大家评论
看到了标题如果还不了解的这几个概念的请先看看博客:详解前缀、中缀、后缀表达式 https://blog.csdn.net/tzs_1041218129/article/details/52650917



先给几个中缀表达式转换成后缀表达式题目做做吧,最后我们在总结超实用的技巧!!

1. 表达式“X=A+B*(C–D)/E”的后缀表示形式可以为

A. XAB+CDE/-*=
B. XA+BC-DE/*=
C. XABCD-*E/+=
D. XABCDE+*/=

先把答案说出来吧,不过你可以自己先好好的想想可以怎么做才能更快的把答案选出来呢?
答案:C

先看看下面图片中的这种方法如何?


2. 已知-算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

A. -a+b*c/d
B. -a+b*cd/e
C. -+*abc/de
D. abcd/+e*-

答案:D



3. 算术表达式a+b*(c+d/e)转为后缀表达式后为()

A. ab+cde/*
B. abcde/+*+
C. abcde/*++
D. abcde*/++

答案:B



4. 表达式a*(b+c)-d的后缀表达式是()

A. abcd*+-
B. abc+*d-
C. abc*+d-
D. -+*abcd

答案:B

好,题目我们也看了这么多了,那我们该如何解决这一类的题目呢?如果你看了文章首部的那篇

博客的话,那你肯定会觉得那个解法很复杂,如果真的是在笔试中出现这样的题目,那得耗费不

少的时间啊。有人要问了,说了那么一堆,那究竟有没有什么快速的方法呢或者说有没有什么简

单的方法可以直接口算的把答案写出来呢,答案是:有的!而且还真的是特别的简单!!!

解题重点:

这里我给出一个中缀表达式~

a+b*c-(d+e)

第一步:按照运算符的优先级对所有的运算单位加括号
// 1. 则式子变成拉:((a+(b*c))-(d+e)) 

第二步:转换前缀与后缀表达式
    1. 前缀表达式:把运算符号移动到对应的括号前面 

          则变成拉:-( +(a *(bc)) +(de)) 

          把括号去掉:-+a*bc+de  前缀表达式出现 

    2. 后缀表达式:把运算符号移动到对应的括号后面 

          则变成拉:((a(bc)* )+ (de)+ )- 

          把括号去掉:abc*+de+-  后缀表达式出现 
 
发现没有,前缀表达式,后缀表达式是不需要用括号来进行优先级的确定的。
如果你习惯拉他的运算方法。计算的时候也就是从两个操作数的前面
或者后面找运算符。而不是中间找,那么也就直接可以口算啦!

你说这种方法是不是很简单啊!!!

现在你再去看看刚才的那四道题目,是不是很简单的答案就口算出来了啊!!!

6不6?

原文链接:https://blog.csdn.net/tzs_1041218129/java/article/details/52711847
#笔试题目#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
3
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务