其他分享
首页 > 其他分享> > 2021-07-20

2021-07-20

作者:互联网

中缀表达式转为前缀和后缀表达式


逆波兰表达式(后缀表达式)

在计算机进行计算时,我们一般将其转换为后缀表达式来进行计算。那么,我们如何将中缀表达式转为后缀表达式呢?


假设我们有一个中缀表达式为:5×(6+3)÷3-1


转换规则
从左往右,遇到数字,则直接写出来,如果是左括号(只有遇到右括号才会弹出),则一定压入符号栈中,如果是符号,则需要比较优先级。如果新的符号的优先级小于或者等于栈顶的符号,那么则将栈中的所有符号给弹出。如果优先级大于栈顶,则直接加入到符号栈中。如果遇到了右括号,则要把左括号以上的所有符号给弹出栈。


实际操作:

  1. 第一个为数字,直接写出来 5
  2. 第二个为×,放入符号栈中。
  3. 第三个为(,放入符号栈中。
  4. 第四个为6,直接写出来,为56
  5. 第五个为+,因为其下面为(,放入栈中。
  6. 第六个为3,直接写出来,为563
  7. 第七个为),与栈中的左括号匹配,弹出括号和两个括号之间的所有的符号,为563+
  8. 第八个为➗,此时栈中还剩×,它们两个的优先级相同,先将×弹出,再将➗放入栈中。为563+×
  9. 第九个为3,直接写出来,为563+×3
  10. 第十个为-,优先级比➗低,将➗弹出,再将-放入栈。为
    563+×3÷
  11. 第一个为1,直接写出来,为563+×3÷1
  12. 栈中还有一个-,将其弹出来,最后结果为563+×3÷1-

前缀表达式计算方式:
从左往右扫描,设置一个栈,里面存放数字。如:563+×3÷1-这个后缀表达式,前三个为数字,则全部放入栈中。第四个为+,则从栈中弹出次顶数字和栈顶数字,进行+运算,最后将结果再放入栈中。重复,直到得到最后结果。(进行减法和除法时,是第二个弹出的数字为被减数和被除数)


波兰表达式(前缀表达式)

转换规则

与后缀表达式转换规则相似,但是从右往左读取,优先顺序改变,后缀是小于或相等,弹出栈所有的符号,而前缀表达式则为小于。最后将得到的式子反转顺序(逆序)。

上述式子的前缀表达式为 -÷×5+6331


后缀表达式计算方式:
从右往左扫描,设置一个栈,里面存放数字。如: -÷×5+6331这个前缀表达式,前四个为数字,则全部放入栈中。第五个为+,则从栈中弹出次顶数字和栈顶数字,进行+运算,最后将结果再放入栈中。重复,直到得到最后结果(进行减法和除法时,是第一个弹出的数字为被减数和被除数)。

标签:20,07,符号,后缀,563,2021,栈中,表达式,数字
来源: https://blog.csdn.net/qqoies/article/details/118936172