• 逆波兰式算法


      1、从左至右扫描一中缀表达式。
       2、若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈
       3、若读取的是运算符
                       (1) 该运算符为左括号"(",则直接存入运算符堆栈。
                       (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止,此时抛弃该左括号。
                       (3) 该运算符为非括号运算符:
                           (a) 若运算符堆栈栈顶的运算符为左括号,则直接存入运算符堆栈。
                           (b) 若比运算符堆栈栈顶的运算符优先级高,则直接存入运算符堆栈。
                           (c) 若比运算符堆栈栈顶的运算符优先级低或相等,则输出栈顶运算符到操作数堆栈,直至运算符栈栈顶运算符低于(不包括等于)该运算符优先级,或为左括号,
                               并将当前运算符压入运算符堆栈。
        4、当表达式读取完成后运算符堆栈中尚有运算符时,则依序取出运算符到操作数堆栈,直到运算符堆栈为空。

  • 相关阅读:
    python内置模块collections介绍
    Python的set集合详解
    不同 Python 数据类型的搜寻
    Python 分支、循环、条件与枚举
    ssrf爆破mysql
    php反序列化
    thinkphp历史漏洞
    Thinkphp 缓存RCE
    绕WAF文章收集
    mssql手工盲注
  • 原文地址:https://www.cnblogs.com/dayang12525/p/6305732.html
Copyright © 2020-2023  润新知