算术表达式-前缀式-后缀式

China☆狼群 提交于 2020-02-05 02:08:52

今天学习到了栈的一道题:数据结构实验之栈与队列二:一般算术表达式转换成后缀式
所以要了解前缀式和后缀式及其的转换。
表达式的转换,前缀式(波兰式)后缀式(逆波兰式)和和我们正常的表达式(中缀表达式) a+b 相比较,+ab 或 ab+ 是一种不同的方式。
例如: a×b+(c-d/e)×f 中缀表达式:

我们把它转前缀或者后缀,以前缀式为例(把一个整体看成两个表达式的一个运算,把运算符放到两个表达式的前面),后缀式是相似的原理,把运算符放到两个表达式的后面。
首先举个例子;
中缀式转后缀式:a×b+(c-d/e) ×f
优先级是 括号 乘除 加减
首先优先括号;括号里优先除法,然后减法。
所以为(除法): a×b+(c-de/)×f
然后(加法):a×b+(cde/-)×f
括号运算完 然后 括号外 优先乘法 然后 加法
所以 (1)ab×+cde/-f×
(2) ab×cde/-f×+
这里只是介绍,简单的理论。
具体代码实现还没有想好。
__________________________________________________________________________________________下划线————————
看到大佬方法。https://blog.csdn.net/qq_34392662/article/details/82055239
中缀转后缀:

                规律: 从前到后扫描,如果是操作数,将结果写下,如果是运算符,则和栈内的运算符比较,如果此运算符的优先级 <= 栈内运算符优先级,则站内运算符出栈,继续和栈内运算符比较,规则一样,如果优先级>栈内运算符优先级则入栈。如果是左括号,则入栈,如果是右括号,则与之对应的左括号到右括号之间的运算符全部出栈。最后把栈内运算符全部写下。

中缀转前缀是 < ,顺序是从后到前。
————————————————

原文链接:https://blog.csdn.net/qq_34392662/article/details/82055239

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!