(转载)数据结构-01-图解后缀表达式值计算方式

目录:

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个栈顶元素计算结果,将结果后进栈

注意,这里是栈里在下的做第一个数,在上的做第二个数

例如,1,3出栈,但是1在3上面,所以3是第一个数,1是第二个数

所以是3-1,而不是1-3
在这里插入图片描述
3.同理2.点数字就进栈
在这里插入图片描述

 4.接着是乘号(*),符号就弹出2个栈顶元素计算结果,将结果后进栈
在这里插入图片描述
5.接着是加号(+),符号就弹出2个栈顶元素计算结果,将结果后进栈
在这里插入图片描述
6.接着是10,数字就进栈
在这里插入图片描述

7.接着是除法(/),符号就弹出2个栈顶元素计算结果,将结果后进栈
在这里插入图片描述
8.接着是加法(+),符号就弹出2个栈顶元素计算结果,将结果后进栈
在这里插入图片描述
9.最后遍历结束,将最后的栈元素返回结果

 

 

3.代码实现

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

 
 
转自:https://blog.csdn.net/jarvan5/article/details/109206706
posted @ 2024-05-13 13:19  cn是大帅哥886  阅读(19)  评论(0编辑  收藏  举报