




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
表达式求值,什么是表达式 ?,表达式,是由数字、运算符、数字分组符号(如括弧)、自由变数和约束变数等以能求得数值的有意义排列方法所得的组合。表达式是一个递归的定义,表达式中可以蕴含表达式。,表达式的基本形式:,S1 + OP + S2,(中缀表达式),表达式的另外两种形式:,OP + S1 + S2 (前缀表达式),S1 + S2 + OP(后缀表达式),前缀、中缀、后缀表达式,中缀表达式: 运算符放在两个运算对象中间。如:(A+B)*C;,后缀表达式: 运算符在式中出现的顺序恰为 表达式的运算顺序;每个运算符和在它之前出现,且紧靠它的两个操作数构成一个最小表达式(算子)。如:AB + C *;,前缀表达式: 连续出现的两个操作数和在它们之前且紧靠它们的运算符构成一个最小表达式。如: * + AB C ;,为何产生三种不同的表达式形式 ?,中缀表达式易于阅读,符合人类思维习惯前缀表达式与后缀表达式,都是用操作符的顺序来代替优先级,可以舍弃括号等概念,化繁为简后缀表达式不同于前缀表达式的一点:操作数在前,操作符在后。 这在计算机编程中更容易实现,后缀表达式的计算,运用后缀表达式进行计算的具体做法:建立一个栈S 从左到右读后缀表达式,读到数字就将它转换为数值压入栈S中,读到运算符则从栈中依次弹出两个数分别到Y和X,然后以“X 运算符 Y”的形式计算机出结果,再压加栈S中 如果后缀表达式未读完,就重复上面过程,最后输出栈顶的数值则为结束,如何从后缀表达式求值,先找运算符 再找操作数,例如: a b c d e / f +,ab,d/e,c-d/e,(c-d/e)f,a,b,e,axb,c,d,d/e,c - d/e,f,(c - d/e)*f,a*b+(c-d/e)*f,ab+(c-d/e)f,但我们已经习惯了中缀表达式。以上思想只解决了计算后缀表达式的问题。能否将我们熟悉的中缀表达式转化为后缀表达式呢? 能,将中缀表达式转换为后缀表达式的算法思想,设立操作符栈,栈底为“#”当读到数字直接送至后缀式队列中 当读到运算符t时, a. 将栈中所有优先级高于或等于t的运算符弹出,送到后缀式队列中; b. t进栈 读到左括号时总是将它压入栈中 读到右括号时,将靠近栈顶的第一个左括号上面的运算符全部依次弹出,送至后缀式队列后,再丢弃左括号。,中缀表达式转后缀表达式示例,7*5-(8+(3+4)/7)#,#,操作数:输出操作符 t :a. 将栈中所有优先级高于或等于t的运算符弹出,送到输出队列中b. t进栈 左括号:压入右括号:将靠近栈顶的第一个左括号上面的运算符全部依次弹出,送至输出队列后,再丢弃左括号,7,5,8,3,4,7,*,+,+,*,(,(,-,(转换后的后缀表达式),-,+,/,+,/,表达式计算实现的总结,通过以上分析,可得出对一般表达式(中缀表达式)进行计算的思路:将中缀表达式串转换为后缀表达式对转换后的后缀表达式进行计算,能否对一个中缀表达式直接进行计算呢 ?,分析:表达式计算涉及两个过程表达式转换过程表达式计算过程两个过程分别使用不同的栈:操作符栈操作数栈,中缀表达式直接计算思路,设立操作符栈(a)和操作数栈(b)设表达式的结束符为“#”,a栈的栈底为“#”;若当前字符串是个操作数,则直接压入b栈。 (设当前运算符为t) 否则:若t的优先级别高于a栈栈顶运算符,则压入a栈 否则:若t的优先级别低于或者等于a栈栈顶运算符,则将栈中 所有优先级高于或等于t的运算符弹出 (对于括号的处理规则与中缀转后缀的规则一致) a栈每弹出一个运算符(除括号),则b栈弹出离栈顶最近的两个操作数进行计算,并将计算结果压入b栈中Goto Step III,中缀表达式直接计算示例,6 * 3(4 + 2)#,6,*,3,4,+,(,2,优先级低于*,计算: 6*3,18
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专业服务行业共享经济市场前景分析报告
- 2025年电子游戏行业虚拟现实技术应用前景预测报告
- 2025年零售行业移动支付应用前景研究报告
- 2025年金融行业区块链数字货币应用前景研究报告
- 2025年人类基因编辑行业伦理风险与医疗应用前景研究报告
- 商场全员安全培训制度课件
- 2025年区块链技术在金融行业应用前景分析研究报告
- 宁波市2025浙江宁波市交通运输局局属事业单位招聘3人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国文联所属单位招聘拟聘用人员笔试历年参考题库附带答案详解
- 吉林省2025年度柳河县事业单位域外人才回引笔试历年参考题库附带答案详解
- 一例老年房颤的个案护理-护理-个案
- GB/T 29178-2012消防应急救援装备配备指南
- GB/T 20160-2006旋转电机绝缘电阻测试
- 结肠息肉课件培训课件
- 饮食营养与健康课件
- Unit 4 Reading and Thinking 学案-高中英语人教版(2019) 选择性必修第一册
- 广告及宣传印刷品制作服务方案
- 安全评价工作程序框图流程图
- 医共体成员单位人力资源工作制度
- 如何建立高效学习小组
- 汽车系统动力学与控制 教学大纲
评论
0/150
提交评论