ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-07-20

2021-07-20 16:33:47  阅读:195  来源: 互联网

标签:20 07 符号 后缀 563 2021 栈中 表达式 数字


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


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

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


假设我们有一个中缀表达式为: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有