西南IT社区
    • 注册
    • 登录
    • 搜索
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    用栈演示表达式4*6^(3+3*3-2*3)-8 的求值过程

    技术答疑
    用栈演示表达式求值过程
    1
    1
    16
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • q464824151
      q464824151 最后由 编辑

      用栈实现算术表达式的运算,需要两个栈:一个用于保存操作数,一个用于保存操作码(运算符)。
      当一直扫描到第一个减号(-)时,两个栈都是在进行入栈操作。
      a0d63042-eca8-411b-84e4-96baf201ba9a-image.png
      因 -(减法)运算符优先级低于optStack栈顶的运算符。这时从optStack栈中弹出,再从numStack中弹出3和3 两个操作数,进行乘法运算33=9,并把结果压入numStack栈中。
      7f6fe5dd-f8cb-467e-9a77-337b2fac37c9-image.png
      计算完成后,因-(减法)和+(加法)的优先级相同,栈内优先。此时,把+从optStack栈中弹出,并从numStack中相继弹出9和3,计算3+9=12,并把结果压入numStack栈中。
      a1100686-6b6a-4eef-bcf8-23a3aa284f72-image.png
      因-(减法)优先级大于栈中(的优先级,-入栈。
      def3d747-1140-4606-b2be-ee8d27d523f3-image.png
      继续扫描,直到遇到右括号。
      a1c77428-683f-4179-97ec-f1425f23ccc3-image.png
      因右括号的优先级最低,或者说表示子表达式到此结束,此时从optStack栈中依次弹出运算符,从numStack中相应弹出 2 个操作数,计算后把结果压入numStack中,直到在optStack栈中遇到左括号。
      弹出
      对3和2进行计算。并把结果6压入numStack中。
      f09f5337-6970-4901-b65a-59b48560fcd7-image.png
      弹出-运算符,并对numStack栈中的12和6进行计算。
      19362635-f0e2-42eb-9a23-503ceb4644cd-image.png
      (出栈,表示由括号表示的子表达式计算结束。继续扫描到第二个-
      825eaee7-63ec-4e00-b748-12ba3d85aa27-image.png
      因-优先级小于^,先做6^6=46656乘方运算 。
      ce0f2f48-1beb-42dd-86fe-02d99513282e-image.png
      -优先级小于*,继续做乘法运算,46656*4=186624。
      0facabb1-929c-4a6f-afb8-7f4b7381183b-image.png
      -入栈,最后一个数字 8入栈。
      75c7d33f-1362-47fc-8171-87bade19cbae-image.png
      因整个表达式结束,弹出-,做最后的减法运算186624-8=186616。整个表达式结束,numStack栈顶的结果为表达式的最后结果。
      cc16784a-fcd0-4ffc-8c10-585c45462f27-image.png

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      F
      漫
      成
      Y
      洋
      书
      Y
      D
      U
      Y
      娇
      玩
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号