zoukankan      html  css  js  c++  java
  • 中缀表达式计算

    双栈法(数字栈和运算符栈)

    1.从前向后遇见数字就压入数字栈

    2.遇见左括号压栈

    3.遇见右括号则弹出数字栈顶两个数字,和一个运算符栈一个运算符进行计算,直至遇见左括号,退括号,计算结果压栈

    4.遇见运算符,若符号栈顶的元素小于当前运算符优先级,则入栈;若相等或大于则数字弹出俩,符号弹出一个计算,直至符号栈顶元素优先级小于当前运算符,入栈当前运算符; 

     注意各个运算符号的优先级:

    除法 4  乘法 3  减法 2 加法 1

    这里将除法的优先级高于乘法是要处理 6 / 3 * 6的问题,减法也类似,处理 2 - 6 + 3 的问题

    也可以将中缀表达式转化为后缀表达式进行计算

    规则:

    从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;

    若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出找并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。

    左括号直接入栈,比较优先级时左括号优先级低于加减乘除

  • 相关阅读:
    Prometheus—告警altermanger
    Prometheus监控Kafka
    get与post(转)
    js typeof
    设置SQL脚本大小敏感
    max Count Group by
    统计当年登陆次数
    IOC
    ORM
    [转载]C#实现获取浏览器信息
  • 原文地址:https://www.cnblogs.com/userrain/p/8930211.html
Copyright © 2011-2022 走看看