找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

算法 前中后缀表达式+思维导图+笔试题目

admin 2019-10-10 06:26 102人围观 C++相关


“ 最近有同学评论我说想看有关于前中后缀的总结,这一期给大家讲一讲这块的总结。然后大家的评论我都会看,可能不能一一回复,但是能够满足大家的内容一定会及时更新,也希望大家能够评论最想要学习的知识点。”


  • 首先来看一道选择题。

  • 这道题首先要知道:1.什么是中缀,前缀表达式 2.其次是知道如何从前缀表达式转为中缀表达式。下面就依次来给大家总结一下。





01



什么是前中后缀表达式


  • 前中后缀表达式的概念比较容易理解,只需要通过一个简单的表达式即可明白。

  • 前缀:*+ab+cd,运算符写在前面,操作数写在后面。

  • 中缀:(a+b)*(c+d),正常的表达式。

  • 后缀:ab+cd+*,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)





02



前缀转中缀


  • 前中后缀最常见的应用就是前缀中缀互相转换,后缀中缀互相转换,其中最简单的是前缀转中缀,我们先来看看如何从前缀转中缀。

  • 需要注意的有三点,1. 从右向左扫描 2.通过栈存储数据,需要了解栈的特性 3.结果还需要重新压入栈中

  • 其中,栈的实现以及相关算法需要大家事先学习,在这里只提一下它的特点:先进后出。






  • 再来看一个例子:+-*^ABCD/E/F+GH转为中缀表达式。



03



中缀转前缀


  • 由中缀转前缀则较为复杂一点。

  • 在这里仍然是从右至左扫描表达式,需要习惯。

  • 需要重点注意的是,在处理非括号运算符的时候,要判断运算符的优先级,例如*/的优先级大于+-,所以碰到+-的时候需要弹出*/,也就是优先级低的保留,优先级高的弹出。






  • 我们来看一个中缀转前缀的例子。

  • 如果想要验证转换的正确性,可以把结果按照前缀转中缀的步骤转一次,转出来结果应该和原始保持一致的,要不然就是转换出了问题。





04



后缀转中缀


  • 后缀转中缀跟前缀转中缀类似,其中不同点在于后缀转中缀是从左至右扫描表达式。





  • 来看一个后缀转中缀的例子。




05



中缀转后缀


  • 和中缀转前缀类似,区别在于从左至右扫描表达式。





  • 来看一个中缀转后缀的例子。




06



思维导图分享


  • 最后分享一下完整的思维导图。





  • 也可以通过小程序查看或下载。





  • 有朋友私信问我看完整版还要下载金山文档吗?

  • 我在这里先解释一下我为什么要用金山文档来制作思维导图:之前制作思维导图是用ProcessOn的,它的确是挺好的一个产品,不过它是收费的,我开通了会员,也在ProcessOn上面有偿分享了我的思维导图,也获得了一些收益,但是后来无意中发现了金山文档也可以制作思维导图,而且是免费的,同时有小程序,手机客户端,电脑客户端,用起来比较方便,所以慢慢的转向了金山文档。

  • 通过微信扫描上面二维码的话正常应该是跳转到微信小程序,如果有问题请联系微信或金山客服。



----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:学习编程面试,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......