数学表达式在栈中的运算示意图详情(超级经典).docVIP

数学表达式在栈中的运算示意图详情(超级经典).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数学表达式在栈中的运算示意图详情(超级经典)

数学表达式在栈中的运算示意图 栈的特性:后进先出。 运算表达式: 5+6*(1+2)-4 读取表达式: 5+6*(1+2)-4 # 运算逻辑说明:使用两个栈,一个是数据栈,一个是操作符栈。数据站用来存储读入的数据或者是运算的结果,操作符栈只存储操作符。 开始读取表达式,读取到 5 ,入数据栈。 继续读取表达式,读取到 + ,入操作符栈。(第一个操作符入栈,不考虑优先级) 继续读取表达式,读取到 6 ,入数据栈。 继续读取表达式,读取到 * ,和上个操作符比较,如果比已在栈中的操作符优先级高,则入栈,否则就运算。(* 优先级高于原有操作符 + ,入栈) 继续读取表达式,读取到 (,和已在栈顶的操作符比较, ( 优先级高于 * ,入栈。 继续读取表达式,读取到 1,入数据栈。 继续读取表达式,读取到 +,和已在栈顶的操作符比较,+ 优先级高于 ( ,入栈。 继续读取表达式,读取到 2,入数据栈。 继续读取表达式,读取到 ),和已在栈顶的操作符比较,)优先级低于 + ,此时此刻,+为栈中的最高优先级,开始运算。 从数据栈中出栈 2 和 1 ,从操作符栈中出栈 + ,进行运算,结果为 3,将3再次入数据栈。此时要记得脱括号。 继续读取表达式,读取到 - ,和已在栈顶的操作符比较,- 优先级低于 * ,即 * 在栈中是优先级最高的操作符,开始运算。从数据栈中出栈 3 和 6 ,从操作符栈中出栈 * ,运算得结果 18 再次存入数据栈。此时 – 再次准备入操作符栈。 继续读取表达式,仍然读取到 - ,和已在栈顶的操作符比较, - 优先级低于 + ,即 + 在栈中是优先级最高的操作符,开始运算,从栈中出栈 18 和 5 ,从操作符栈中出栈 + ,运算结果 23 再次存入数据栈。此时 – 再次准备入操作符栈。由于操作符栈中已无任何操作符,此时, - 入栈。 继续读取表达式,读取到 4 ,入数据栈。 将栈中位计算的数据和操作符进行运算,从数据栈中出栈4 和 23 ,从操作符栈中出栈 - ,运算结果 19 。说明:运算的时候是后出栈的数据减去先出栈的数据。即23 – 4 ,不是4 – 23 。 继续读取表达式,读取到 # ,入操作符栈,表示运算结束。

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档