博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中缀表达式转后缀表达式并计算后缀表达式的值...
阅读量:2440 次
发布时间:2019-05-10

本文共 3860 字,大约阅读时间需要 12 分钟。

中缀表达式转后缀表达式思路:

    首先给用到的每个操作符如'+', '-', '*', '/'等按照他们原本的计算优先级定义两个代表优先级的数值, 如inStackPri代表入栈之后的优先级, outStackPri代表入栈之前的优先级...

    然后扫描表达式, 如果是数字, 直接输出, 如果是')', 则将栈顶操作符依次出栈, 直到遇到'('...如果是其他操作符, 则用这个操作符的outStackPri值和栈顶的操作符的inStackPri进行比较, 如果小于, 则将栈顶的操作符出栈并输出, 之后再次将outStackPri和栈顶操作符的inStackPri比较,如果仍小于, 继续出栈, 直到outStackPri大于栈顶操作符的inStackPri, 然后将当前这个操作符入栈...当扫描完表达式时, 如果栈中还有操作符, 则依次出栈输出...最后输出的就是后缀表达式...

 

后缀表达式计算思路:

    一次扫描后缀表达式, 如果是数字, 则压栈, 如果是操作符, 则依次取出栈顶的两个操作数进行计算, 并将计算结果压栈, 当扫描完表达式时, 栈中的元素就是表达式的计算结果...

    具体的实现如下(这个实现没有考虑对错误的处理, 假定输入的表达式是正确的, 且操作符都是二元操作符)

 

 

 

测试输入:

1+2*(3-4)-9/3

3*2+(9-0)^2

1+9+5

输出:

sufix expression is: 1234-*+93/-

result is: -4

sufix expression is: 32*90-2^+

result is: 87

sufix expression is: 19+5+

result is: 15

参考:《数据结构》殷人昆

 

转载地址:http://qfkqb.baihongyu.com/

你可能感兴趣的文章
Server has authorization schema version 3,but found a schema version 1 user
查看>>
WebSphere的池设置——线程池、连接池
查看>>
用户态调测工具(二):perror和man
查看>>
机器学习&深度学习入门历程
查看>>
LTP(Linux Test Project)学习(一)——LTP介绍
查看>>
LTP(Linux Test Project)学习(三)——LTP目录介绍
查看>>
DirtyCow CVE-2016-5195分析
查看>>
LTP(Linux Test Project)学习(七)——LTP提交补丁
查看>>
Linux 4.0亮点特性
查看>>
Linux 4.1亮点特性
查看>>
Linux 4.4亮点特性
查看>>
Linux 4.5 亮点特性
查看>>
Makefile开发工具学习小结
查看>>
学习linux0.11内核代码——引导启动程序setup.s
查看>>
决策树
查看>>
CGI
查看>>
csv文件
查看>>
XML CDATA
查看>>
转义字符
查看>>
TIOBE开发语言排行榜
查看>>