目录:

  • 数据结构-01-图解后缀表达式值计算方式
  • 数据结构-02 图解中缀表达式转后缀表达式并计算值

1.简介

问题:

我们平常使用的数学表达式大多数是“中缀表达式”例如:9+(3-1)×3+10÷2,对人比较友好,但是这个对计算机计算并不友好,因为计算机无法智能判断运算顺序的问题(比如说乘法加法等优先级和括号等)

解决方案:

20世纪50年代,波兰逻辑学家Jan·ukasiewicz,想到了不需要判断顺序的数学表达式,这就是后缀表达式(也称之为逆波兰表达式)

2.图解后缀表达式计算方式

规则:遍历后缀表达式的每个元素,
1.遇到数字就进栈,
2.遇到符号就将栈顶的2个元素出栈,然后将计算结果进栈。(下面的例子会帮助你理解)

下面是计算后缀表达式"9 3 1-3*+10 2/+"(原始中缀表达式是 9+(3-1)×3+10÷2,后面一节将会介绍中缀转后缀的教程)

初始化一个空栈
1.因为前面3个数字(9,3,1)都是数字,数字就进栈。

2.接着是 减号(-),符号就弹出2个栈顶元素计算结果,将结果后进栈

3.同理2.点数字就进栈

4.接着是乘号(*),符号就弹出2个栈顶元素计算结果,将结果后进栈

5.接着是加号(+),符号就弹出2个栈顶元素计算结果,将结果后进栈

6.接着是10,数字就进栈

7.接着是除法(/),符号就弹出2个栈顶元素计算结果,将结果后进栈

8.接着是加法(+),符号就弹出2个栈顶元素计算结果,将结果后进栈

9.最后遍历结束,将最后的栈元素返回结果

3.代码实现

我将会在接下来的章节实现
1.中缀表达式转后缀表达式
2.计算后缀表达式的值
到时候代码会放到总代码里面.

数据结构-01-图解后缀表达式值计算方式相关推荐

  1. 有趣的数据结构算法10——后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果

    有趣的数据结构算法10--后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果 解题思路 实现代码 GITHUB下载连接 在前一天已经利用栈完成2进制到8进制的转换.但是栈的应用方面还有很多,本次我将 ...

  2. 数据结构:前缀,中缀,后缀表达式(逆波兰表达式)

    前缀表达式(波兰表达式) 前缀表达式的运算符位于操作数之前. 比如 (1+2)*3-4  对应的前缀表达式就是: - * + 1 2 3 4 前缀表达式的计算机求值 从右至左扫描表达式,遇到数字时,就 ...

  3. 图解后缀表达式的计算过程

    为了解释后缀表达式的好处,我们先来看看,计算机如何应用后缀表达式计算出最终的结果20的. 后缀表达式:9 3 1-3*+ 10 2/+ 规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到 ...

  4. 栈应用:后缀表达式求值

    在上一篇博客 栈应用:中缀表达式转后缀表达式 中我们知道如何通过栈将中缀表达式转为后缀表达式,这次我们继续用栈 来实现后缀表达式求值,结合上一篇博客. 上一篇博客中是用c语言实现的,由于c语言中不支持 ...

  5. 前缀表达式与后缀表达式求法(栈的应用)

    1.前缀.中缀.后缀表达式 中缀表达式即为人们熟悉的数学运算式子写法.而前缀.后缀表达式是为了计算机计算方便的写法. 前缀表达式是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操 ...

  6. 【中缀、后缀表达式(整数)的介绍、转换及运算】

    中缀.后缀表达式(整数)的介绍.转换及运算 一.简介 二.中缀表达式转后缀表达式 三.中缀表达式转后缀表达式代码实现 四.中缀表达式计算机求值代码实现 1.首先创建一个栈类 2.测试执行 五.后缀表达 ...

  7. 数据结构中缀表达式转后缀表达式与后缀表达式的求值实训报告_动图+源码,演示 Java 中常用数据结构执行过程及原理...

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 3.7 分钟. 作者:大道方圆cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, ...

  8. Java数据结构和算法(六)——前缀、中缀、后缀表达式

    前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...

  9. [数据结构考前必看]中缀表达式转化成后缀表达式_例题超多+分步骤讲解+带你手算

    中缀.后缀表达式定义 中缀表达式又称波兰式,有利于人们阅读与表达. 后缀表达式又称逆波兰式,有利于机器进行运算. 例题1: 中缀表达式:(a+b+c*d) /e 首先让我们来看一下运算符对应的优先级, ...

  10. 数据结构-栈应用之逆波兰表达式(后缀表达式)

    逆波兰表达式含义我就不做赘述了,摘自百科上的一段话: 逆波兰表达式又叫做后缀表达式.在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表示.波兰逻辑学家J.Lukas ...

最新文章

  1. 也论标准: 统一是啥好事情?
  2. python之路6-迭代器、生成器、装饰器
  3. Hibernate 笔记 缓存
  4. P7519-[省选联考 2021 A/B 卷]滚榜【状压dp】
  5. ArcGIS斜坡单元工具箱
  6. 过了这么多年,才发现写的最多的代码竟然是...
  7. 超简单的Tomcat安装过程
  8. SAP License:SAP系统中的三类凭证
  9. 【无标题】提示用户输入用户名,然后再提示输入密码,如果用户名 是“admin”并且密码是“88888”,则提示正确,否则,如果 用户名不是admin还提示用户用户名不存在,如果用户名是
  10. c#的const可以用于引用类型吗
  11. java 判断 and_Java中如何判断两个对象是否相等(Java equals and ==)
  12. python 希尔伯特变换_信号处理——Hilbert变换及谱分析
  13. TMC2300-LA 低压、超静音微型步进电机驱动器
  14. win10系统cpu内核或逻辑核心缺少缺少,解决办法
  15. 立秋了,愿天下人天寒心不寒,快快乐乐
  16. ITパスポート5天学习笔记④_Rx
  17. android webview goback 刷新,解决webview调用goBack()返回上一页自动刷新闪白的情况
  18. [转] 关于“时间”的一次探索
  19. Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
  20. carplay_如何更改您的CarPlay壁纸

热门文章

  1. 关于虚拟机xp系统上不了网的问题
  2. centos7虚拟机网桥模式不通_Centos7虚拟机桥接模式
  3. 【Java】随机姓名的生成
  4. 马化腾惊现Leetcode每天刷题?为啥大佬都这么努力!
  5. SPI总线-物理层 协议层
  6. mysql5.6卸载干净_Mysql完全干净卸载教程
  7. matlab多行注释
  8. java语言的基本介绍及相关特性
  9. OpenRefine开源数据清洗软件的GREL语言
  10. h264解码延迟优化_FFMPEG H264/H265 编码延迟问题