宝、⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

后缀表达式是栈的运用,如果你还不知道栈是什么,那请你先去看看关于栈的文章

文章目录

  • 一、什么是后缀表达式
  • 二、后缀表达式的运算顺序
  • 三、中缀表达式
  • 四、中缀表达式转化为后 缀表达式


一、什么是后缀表达式

后缀表达式是一种不需要括号的表达式。

对于四则运算,我们用括号来规定了它的运算顺序。

但是在早些年对于计算机,并没有括号来规定其运算顺序。

当没有了括号 比如想要输入 9+(3-1)x3+10/2 当没有了括号会怎么样呢,

总不能像这样:9+3-1x3+10/2 输入吧

那么伟大的科学家是怎么来解决四则运算顺序的呢?

20世纪50年代 波兰逻辑学家Jan Lukasiewicz 发明了一种没有括号的表达式(后缀表达式)

来解决这个问题,之所以叫后缀表达式 是因为所有的运算符号都要在数字后面出现才行;

二、后缀表达式的运算顺序

先给出一个后缀表达式吧如

四则表达式:9+(3-1)x3+10÷2

后缀表达式:9 3 1 - 3 x + 10 2 / +

相信你一定蒙圈了

我们先把四则表达式的结果算出来 我想想是多少呢

哦原来是20!(我太聪明了)

四则表达式显然不需要多bb

那后缀表达式是怎么算的呢

那显然就需要引用最开始说的栈了

因为后缀表表达式本来就是栈的一种应用

那么现在来说说后缀表达式的规则

先从左到右依次入栈

当是数字的时候直接入栈

当是运算符号的时候

就将栈的最上面两个数拿出进行运算 后 再将结果进栈 记住(栈顶元素永远在运算符号的右边)

那现在我们来算

后缀表达式:9 3 1 - 3 x + 10 2 ÷ +

第一步从左到右依次入栈 9 3 1

现在栈从上到下1 3 9   进入符号 -   将1和3 拿出  3-1  =2

栈顶元素永远在运算符号的右边

然后再把2进栈

现在栈从上到下是 2 9

再进入3

现在栈从上到下是 3 2 9

再运算符号 x 拿出 2x3 =6 再进栈

现在栈从上到下是 6 9

在运算+ 6+9=15

现在栈从上到下是 15

后缀表达式:9 3 1 - 3 x + 10 2 ÷ +

进入 10  2

现在栈从上到下是 2 10 15

运算 ÷  10÷2=5 5 进栈

现在栈从上到下是 5 15

最后运算+  15+5

得20

最后20出栈

(累了)

后缀表达式:9 3 1 - 3 x + 10 2 ÷ +   =20

三、中缀表达式

啊??就是四则运算表达式 宝

四、中缀表达式转化为后缀表达式

相信看了前面的规则后,这个你应该也不难理解了

直接上规则:

9+(3-1)x3+10÷2

后缀表达式从左到右遍历,

1,是数字直接写上

2,是任何运算符号

①右括号----) 和优先级 不高于 栈顶元素 则 栈顶元素依次输出 并当前符号进栈(括号直接消失) 

好吧我知道你又麻了

直接诉说好吧,

中缀表达式 9+(3-1)x3+10÷2

从左到右

9 写上

当前表达式为 9

+ 入栈(目前栈空,栈空就进栈)

(     入栈

目前栈里从上到下:(  +

3写上

当前表达式为 9  3

-  入栈

目前栈里从上到下:-(  +

中缀表达式 9+(3-1)x3+10÷2

1写上

当前表达式为 9  3  1

)右括号 遇到右括号 输出栈顶元素 并抵消左括号

写上  -

当前表达式为 9 3 1 -

当前栈从上到下 +

中缀表达式 9+(3-1)x3+10÷2

x 优先级高于+ 直接入栈

3写上

当前表达式 9 3 1 - 3

当前栈从上到下 x +

接下来 +  判断优先级 +优先级小于x   x 出栈写上表达式

判断优先级  + 和+ 相同  属于 不高于  + 出栈 写上表达式  后面的+ 入栈

当前表达式  9 3 1 - 3  x +

再后面 10 写上表达式

÷ 判断优先级 高于+  进栈

2 写上

当前表达式 9 3 1 - 3 x + 10  2

当前栈从上到下 ÷ +

由于已经没有符号和数字了

栈内依次出栈并写入表达式

最后得出 9 3 1 - 3 x + 10  2  ÷ +


总结

宝 你懂了没我纯文字描述真的很莽 (主要是我不会作图)以后会优化的,另外有错误一定要评论指出,我最怕 我一个人在这里乱bb 没人告诉我,我就淦了。另外这是参照大话数据结构写的。、大家要学数据结构建议买本书系统的学习

祝你越来越久,不要关注我(疯狂暗示)

爱你

后缀表达式看完这一篇文章就理解了!相关推荐

  1. Python常用基础语法知识点大全合集,看完这一篇文章就够了

    介绍 Python 是一门独特的语言,快速浏览一下他的要点: 面向对象:每一个变量都是一个类,有其自己的属性(attribute)与方法(method). 语法块:用缩进(四个空格)而不是分号.花括号 ...

  2. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(下)

    共分三篇,这是第3篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(上),看完这个你还不理解右值引用和移动构造 你就可以来咬我(中). 下面是新标准下的其他特性(共十点),了解一下, ...

  3. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(中)

    共分三篇,这是第2篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(上),看完这个你还不理解右值引用和移动构造 你就可以来咬我(下). 看完上篇,应该对右值引用和移动构造有了总体上的 ...

  4. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(上)

    共分三篇,这是第一篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(中),看完这个你还不理解右值引用和移动构造 你就可以来咬我(下). C++ 右值引用 & 新特性 C++ ...

  5. 入门、复习微服务的同学看过来,一篇文章让你彻底搞懂微服务

    废话不多说,各位先看下微服务的简介 微服务简介 微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务 ...

  6. 产品经理看过来,一篇文章说清楚MRD文档怎么写

    什么是MRD? mrd是通过市场.用户.竞品.产品等一系列可行性分析,向运营.业务.产品等描述做什么样产品能够在市场上胜出的市场需求文档. 定义包含了mrd面对的人群是运营.业务.产品等业务线上的人, ...

  7. 一张图带你看完图论第一章(包含定义、定理、公式、推导证明和例题)

    1.1 图的基本描述 几种特殊图 有限图 复合图 简单图(无环无重边) 完全图   Kn 边数最多的简单图             同构下 唯一             边数Cn2=n(n-1)/2 ...

  8. 001还在搞不清自动化测吗,看完这一篇文档带你深入剖析

    1.什么是自动化 概念:由机器设备代替人工自动完成指定目标的过程 1.1优点 1.减少人工劳动 2.提高工作效率 3.产品规格统一标准 2.什么是自动化测试 概念:让程序代替人工验证系统功能的过程 2 ...

  9. 贝叶斯网络,看完这篇我终于理解了!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨mantch@知乎 来源丨https://zhuanlan.z ...

最新文章

  1. strcmp函数和strcpy函数
  2. [SPOJ] 1043 Can you answer these queries I [GSS1]
  3. 数据结构与算法之递归题目
  4. 8.5 趣味游戏(2)
  5. django ajax 简书,Django_ajax
  6. JavaScript复习笔记(3)——数据类型(null、undefined、NaN)与深度克隆
  7. python运维案例开发_python运维开发之第六天
  8. 姚前:分布式账本与传统账本的异同及其现实意义
  9. 《赢在中国》第二赛季108将进京
  10. 应用计算机测线性电阻伏安特性曲线,伏安特性曲线
  11. 爬虫项目实操四、用Scrapy爬取招聘网站的招聘信息
  12. Android App赞赏功能,微信公众号赞赏功能升级:作者可直接收到赞赏, iOS安卓均可用...
  13. 1972:【15NOIP普及组】推销员
  14. 三年三个商业理论,你是否超越了?
  15. 关于 ORA-01012: not logged on
  16. 关于怎么测试网站页面打开速度?有什么工具能实现么?
  17. 数字IC后端需要学习什么?需要具备哪些技能?
  18. 手欠,给DELL R720加硬盘
  19. C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑
  20. Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析

热门文章

  1. win11任务栏无响应/卡死
  2. Unity UGUI Toggle监听onValueChanged
  3. string.Format()之格式化数值类型数据
  4. 人工智能html5背景,HTML5人工智能基础及实践
  5. 使用Android拨打电话功能
  6. 使用Keras的面部表情识别
  7. 今晚没有iPhone 12?首发A14机型确定:意料不到
  8. win系统下设置小鹤双拼
  9. C#开发 虚拟翻书软件
  10. Typescript助力项目开发:JS切换TS、TS类型定制与思考