- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于逆波兰式法的数学表达式计算算法.pdf
基于逆波兰式法的数学表达式计算算法
我在上一篇文章中给出了计算规则,但没有举例,这里我举一个具体的例子做说明,方
便大家理解。
上篇文章的地址:/tangqs/archive/20 11/ 11/03/2234715.html
里面有Delphi7 版的源代码和按此方法开发的表达式计算器。
这里先给出运算符的优先级,表中0 级优先级最低,7 级最高,如下:
优先级 0 1 2 3 4 5 6 7
运算符 # ( , + - * / @ ~ !% ^ )
表达式 左括 函数参数 阶乘,百分
说明 加减 乘除 正负 右括弧
结束符 弧 连接符 数,求幂
下面举一个简单的例子,计算表达式:2+ (8+4^2)*3
主要分两步,第一步生成逆波兰表达式,第二步计算逆波兰表达式,如下:
第一、生成逆波兰表达式
首先构建一个存储器,另一个符号栈,存储器是从左向右储存数据,而符号栈则遵守后
进先出的原则,计算表达式按从左至右的顺序扫描。
* 读入一个数据 (重点注意:数值与函数名非单个字符,需要做判断处理)
1. 如果是左单目运算符或者函数名,直接入符号栈;比如 正负号 ~ @ max sin
2. 如果是右单目运算符,直接入存储器栈;比如 阶乘!与百分号%
3. 如果是运输量,则直接写入存储器;检查符号栈顶是否有单目运算符,有的话则全部出
栈,并写入存储器;
4. 如果是左括号(,则直接入符号栈;
5. 如果是右括号) ,则弹出符号栈数据,写入存储器,一直到左括号弹出(左括弧直接丢弃,
不写入存储器) ,再检查栈顶是否为左单目运算符或者函数名,是的话继续弹出,直到遇到
双目运算符;
6. 如果是双目运算符,则与栈顶符号比较优先级,若大于栈顶优先级,则入栈;否则弹出
栈顶符号并写入存储器,直到栈顶符号的运算优先级较小为止;
7 .如果是函数参数的连接逗号“,”时,则弹出符号栈数据,直到遇到左括弧 ( 或者逗号,
为止,再将逗号,入符号栈;
8.如果是结束符 (表示表达式已全部读完),则符号栈全部弹出并写入存储器,否则继续按
以上规则读取下一个数据;
下面将逐步介绍逆波兰式生成过程:
表达式按从左至右扫描,标记为红 的字符为当前步骤扫描的字符:
0 预处理:为表达式添加一个结束标示符 “# ”,扫描时按双目运算符考虑,
○
处理后表达式为:2+ (8+4^2)*3#
1 2+ (8+4^2)*3#:扫描“2 ”,按规则3,将运算量 2 压入存储器,如下:
○
存储器: 2
符号栈:暂空
2 2+ (8+4^2)*3#:扫描“+ ”,按规则6,将加号压入符号栈,如下:
○
存储器: 2
符号栈:
+
3 2+ (8+4^2)*3#:扫描“(”,按规则4,将右括弧直接压入符号栈,如下:
○
存储器: 2
符号栈:
(
+
4 2+ (8+4^2)*3#:扫描“8”,按规则3,将运算量 8 压入存储器,如下:
○
存储器: 2 8
符号栈:
(
+
5 2+ (8+4^2)*3#:扫描“+ ”,按规则6,优先级高于 (,直接压入符号栈,如下:
○
存储器: 2 8
符号栈:
+
(
+
6 2+ (8+4^2)*3#:扫描“4 ”,按规则3,将运算量 4 压入存储器,如下:
○
存储器: 2 8 4
符号栈:
+
(
您可能关注的文档
最近下载
- 2023年山东省青岛市市北区“未来之星”选拔活动试卷(四、五年级).pdf VIP
- 鲁科版高中化学目录.pdf VIP
- 金融英语翻译 Chapter 15 应收款项.pptx VIP
- 烟草法律知识考试真题题库(含答案).pdf VIP
- 三年级上册 劳动教案.pdf VIP
- DB12T 775-2018 防雷装置检测业务规范.docx VIP
- 专题2.6 一元二次方程应用-几何动态问题(专项训练).pdf VIP
- 觉醒年代人物小传800字.doc VIP
- [通力KONE电梯资料]CTP-07.30.S2A_安全钳.pdf VIP
- 【名校课堂】九年级数学下册 28.1 锐角三角函数 正弦(第1课时)练习 (新版)新人教版.doc VIP
文档评论(0)