版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本节内容栈的应用——表达式求值研/CSKAOYAN知识总览研/CSKAOYAN大家熟悉的算数表达式Reference:Wikipedia——ReversePolishnotation((15÷
(7−(1+1)))×
3)−(2+(1+1))③②①④⑦⑥⑤15÷
7−1+1×
3−2+1+1①②④③⑤⑥⑦界限符是必不可少的,反映了计算的先后顺序由三个部分组成:操作数、运算符、界限符研/CSKAOYAN波兰数学家的灵感((15÷
(7−(1+1)))×
3)−(2+(1+1))一个灵感:可以不用界限符也能无歧义地表达运算顺序ReversePolishnotation(逆波兰表达式
=
后缀表达式)Polishnotation(波兰表达式
=
前缀表达式)研/CSKAOYAN中缀、后缀、前缀表达式运算符在两个规则:运算符在规则:运算符在操作数中间两个操作数后面两个操作数前面中缀表达式后缀表达式前缀表达式a+bab++aba+b-cab+c--+abca+b-c*dab+cd*--+ab*cd研/CSKAOYAN中缀表达式转后缀表达式(手算)中缀转后缀的手算方法:①确定中缀表达式中各个运算符的运算顺序②选择下一个运算符,按照「左操作数右操作数运算符」的方式组合成一个新的操作数③如果还有运算符没被处理,就继续②((15÷
(7−(1+1)))×
3)−(2+(1+1))中缀表达式③②①④⑦⑥⑤后缀表达式①
②③
④
⑤
⑥⑦15711+-
÷
3
×
211++-研/CSKAOYAN中缀表达式转后缀表达式(手算)中缀转后缀的手算方法:①确定中缀表达式中各个运算符的运算顺序运算顺序不唯一,因此对应的后缀表达式也不唯一②选择下一个运算符,按照「左操作数右操作数运算符」的方式组合成一个新的操作数③如果还有运算符没被处理,就继续②A+B*(C-D)–E/FA+B*(C-D)–E/F③②①⑤④⑤③②④①①②③④⑤②③①④⑤ABCD-*+EF/-ABCD-*EF/-+私房菜:“左优先”原则,不要FreeStyle,保证手算和机算结果相同客观来看两种都正确,只“左优先”原则:只要左边的运算符能先计算,就优先算左边的是“机算”结果是前者研/CSKAOYAN中缀表达式转后缀表达式(手算)中缀转后缀的手算方法:①确定中缀表达式中各个运算符的运算顺序运算顺序不唯一,因此对应的后缀表达式也不唯一②选择下一个运算符,按照「左操作数右操作数运算符」的方式组合成一个新的操作数③如果还有运算符没被处理,就继续②“左优先”原则:只要左边的运算符能先计算,就优先算左边的可保证运算顺序唯一A+B-C*D/E+F①④②③⑤AB+CD*E/-F+①②③④⑤研/CSKAOYAN后缀表达式的计算(手算)((15÷
(7−(1+1)))×
3)−(2+(1+1))中缀表达式后缀表达式③②①④⑦⑥⑤①
②③
④
⑤
⑥⑦15711+-
÷
3
×
211++-后缀表达式的手算方法:从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数注意:两个操作数的左右顺序研/CSKAOYAN后缀表达式的计算(手算)后缀表达式的手算方法:从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数注意:两个操作数的左右顺序A+B*(C-D)–E/F③②①⑤④④⑤①②③ABCD-*+EF/-研/CSKAOYAN后缀表达式的计算(手算)后缀表达式的手算方法:从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数注意:两个操作数的左右顺序A+B-C*D/E+F特点:最后出现的操作数先被运算LIFO(后进先出)①④②③⑤①②③④⑤AB+CD*E/-F+栈!!!研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F①④②③⑤①②③④⑤AB+CD*E/-F+A研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F①④②③⑤①②③④⑤AB+CD*E/-F+BA研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F注意:先出栈的①④②③⑤①②③④⑤是“右操作数”AB+CD*E/-F++BA
A+B研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+FC*D①④②③⑤①②③④⑤AB+CD*E/-F+DCA+B研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F(C*D)/E①④②③⑤①②③④⑤AB+CD*E/-F+EC*DA+B研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F(A+B)-((C*D)/E)①④②③⑤①②③④⑤AB+CD*E/-F+A+B(C*D)/E研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F((A+B)-((C*D)/E))+F①④②③⑤①②③④⑤AB+CD*E/-F+F(A+B)-((C*D)/E)研/CSKAOYAN后缀表达式的计算(机算)用栈实现后缀表达式的计算:①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③注意:先出栈的是“右操作数”③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈A+B-C*D/E+F若表达式合法,①④②③⑤①②③④⑤AB+CD*E/-F+则最后栈中只会留下一个元素,就是最终结果((A+B)-((C*D)/E))+F研/CSKAOYAN后缀表达式的计算(机算)后缀表达式适用于基于栈的编程语言(stack-orientedprogramminglanguage),如:用栈实现后缀表达式的计算:Forth、PostScript①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③注意:先出栈的是“右操作数”③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①栈((15÷
(7−(1+1)))×
3)−(2+(1+1))③②①④⑦⑥⑤15711+-
÷
3
×
211++-思考:后缀表达式怎么转中缀?研/CSKAOYAN中缀表达式转前缀表达式(手算)中缀转前缀的手算方法:①确定中缀表达式中各个运算符的运算顺序②选择下一个运算符,按照「运算符左操作数右操作数」的方式组合成一个新的操作数③如果还有运算符没被处理,就继续②“右优先”原则:只要右边的运算符能先计算,就优先算右边的A+B*(C-D)–E/FA+B*(C-D)–E/F③②①⑤④⑤③②④①⑤③②①④⑤④③②①-+A*B-CD/EF+A-*B-CD/EF研/CSKAOYAN中缀表达式转前缀表达式(手算)((15÷
(7−(1+1)))×
3)−(2+(1+1))中缀转后缀:“左优先”③②①④⑦⑥⑤15711+-
÷
3
×
211++-((15÷
(7−(1+1)))×
3)−(2+(1+1))中缀转前缀:“右优先”⑤④③⑥⑦②①-
×÷
15-7+113+2+11⑦⑥⑤④③②①研/CSKAOYAN前缀表达式的计算用栈实现前缀表达式的计算:①从右往左扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③注意:先出栈的是“左操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新建古塔的施工方案(3篇)
- 春节寿司活动方案策划(3篇)
- 校园营销泡面策划方案(3篇)
- 气温下降应急预案范文(3篇)
- 河道排污清淤施工方案(3篇)
- 混凝土公司环境应急预案(3篇)
- 煤矿采空区塌陷应急预案(3篇)
- 电力管过路施工方案(3篇)
- 砂石滤水层施工方案(3篇)
- 简明管带机施工方案(3篇)
- 2026长江财产保险股份有限公司武汉分公司综合部(副)经理招聘1人笔试备考题库及答案解析
- 2026年4月自考10993工程数学(线性代数、概率论与数理统计)试题
- GB/Z 177.2-2026人工智能终端智能化分级第2部分:总体要求
- 2026年广东东莞市初二学业水平地理生物会考试题题库(答案+解析)
- 中远海运集团2026招聘笔试
- 二次供水设施维护与安全运行管理制度培训
- 2025年日照教师编会计岗笔试及答案
- 2025年7月浙江省普通高中学业水平考试化学试卷(含答案)
- 腻子修补施工方案
- 康复医学科髋关节Harris-、膝关节HSS评分表
- 公路工程施工突发环境污染事件应急预案
评论
0/150
提交评论