- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运算式求值与转换
運算式求值與轉換-stack之應用 Lai Ah Fur 前序式(prefix)求值 處理過程: 由右而左掃描運算式:二種處理方式 (1)由右而左讀取運算元/子 (2)將運算元/子由左而右push到stack,再由stack中pop (順序即為由右而左) 掃描到運算元(0..9),push到stack 掃描到運算子(+-*/),由stack中pop出二元素. 並進行計算,最後將計算結果push到stack 當掃描運算式結束,將由stack中pop出最後運算式結果.若stack中仍有元素表示運算式寫法有誤 前序式求值example *+47-82 處理過程: Scan 2, push into stack Scan 8 , push into stack Scan -, pop 2 operands from stack, then evaluate, finally push the result into stack Scan 7, push into stack Scan 4, push into stack Scan +, pop 2 operands from stack, then evaluate, finally push the result into stack Scan *, pop 2 operands from stack, then evaluate, finally push the result into stack Finally, pop the result from the stack 後序式(postfix)求值 處理過程: 由左而右掃描運算式 掃描到運算元(0..9),push到stack 掃描到運算子(+-*/),由stack中pop出二元素. 並進行計算,最後將計算結果push到stack 當掃描運算式結束,將由stack中pop出最後運算式結果.若stack中仍有元素表示運算式寫法有誤 後序式求值example 47+82-* 處理過程: Scan 4, push into stack Scan 7, push into stack Scan +, pop 2 operands from stack, then evaluate, finally push the result into stack Scan 8, push into stack Scan 2, push into stack Scan -, pop 2 operands from stack, then evaluate, finally push the result into stack Scan *, pop 2 operands from stack, then evaluate, finally push the result into stack Finally, pop the result from the stack 中序式求值example 4+7*8-2 處理過程: Scan 4, push into operand stack Scan +, push into operator stack Scan 7, push into operand stack Scan *,priority:*(目前)+(stack top), push into operator stack Scan 8, push into stack Scan -, priority:-(目前)=*(stack top), pop 2 operands from stack and pop * from operator stack, then evaluate, push the result into operand stack; priority:-(目前)=+(stack top) ,pop 2 operands from stack and pop + from operator stack, then evaluate, push the result into operand stack; finally push – into operator stack. Scan 2, push into stack Scan over, pop 2 operands from stack and pop - from operator stack 自行練習: 3+4*5*6-7-8處理過程 Problem: 未處理“()”問題 中序式(infix)求值(1) 處理過程: 由左而右掃描運算式,且須二個stack 掃描到運算元(0..9),push到operand stack 掃描到運算子(+-*/)
文档评论(0)