李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
数据结构学习--逆波兰表达式
Leefs
2020-01-29 PM
2075℃
0条
# 数据结构学习--逆波兰表达式 ### 一、前缀表达式 ```visual basic (1)前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前 (2)举例说明: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6 ``` **前缀表达式的计算机求值** 从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果 ```visual basic 例如:(3+4) X 5-6对应的前缀表达式就是- X + 3 4 5 6, 针对前缀表达式求值步骤如下: 1. 从右至左扫描,将6、5、4、3压入堆栈 2. 遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),计算出3+4的值,得7,再将7入栈 3. 接下来是X运算符,因此弹出7和5,计算出7X5=35,将35入栈 4. 最后是-运算符,计算出35-6的值,即29,由此得出最终结果 ``` ### 二、中缀表达式 ```visual basic (1)中缀表达式就是常见的运算表达式,如(3+4)×5-6 (2)中缀表达式的求值是我们人最熟悉的,但是对计算机来说却不好操作(前面我们讲的案例就能看的这个问题),因此,在计算结果时,往往会将中缀表达式转成其它表达式来操作(一般转成后缀表达式.) ``` ### 三、后缀表达式 ``` (1)后缀表达式又称逆波兰表达式,与前缀表达式相似,只是运算符位于操作数之后 (2)中举例说明: (3+4)×5-6 对应的后缀表达式就是 3 4 + 5 × 6 – ``` **再比如**: | 正常的表达式 | 逆波兰表达式 | | ------------ | ------------- | | a+b | a b + | | a+(b-c) | a b c - + | | a+(b-c)*d | a b c – d * + | | a+d*(b-c) | a d b c - * + | | a=1+3 | a 1 3 + = | **后缀表达式的计算机求值** 从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素和栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果 ``` 例如:(3+4)X5-6对应的后缀表达式就是3 4 + 5 X 6 -, 针对后缀表达式求值步骤如下: (1)从左至右扫描,将3和4压入堆栈; (2)遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素),计算出3+4的值,得7,再将7入栈; (3)将5入栈; (4)接下来是×运算符,因此弹出5和7,计算出7×5=35,将35入栈; (5)将6入栈; (6)最后是-运算符,计算出35-6的值,即29,由此得出最终结果 ```
标签:
数据结构
,
栈
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/500.html
上一篇
数据结构学习--栈实现综合计算器(中缀表达式)
下一篇
数据结构学习--逆波兰计算器
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
Jenkins
前端
Golang
Http
GET和POST
BurpSuite
机器学习
容器深入研究
二叉树
微服务
Livy
VUE
Stream流
递归
Spark Core
工具
高并发
查找
FileBeat
RSA加解密
pytorch
JVM
Git
Spring
Java
序列化和反序列化
JavaWEB项目搭建
并发线程
MyBatis
Thymeleaf
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭