zoukankan      html  css  js  c++  java
  • 前缀、中缀、后缀表达式的转换(栈)

    前缀表达式:op a b   

    中缀表达式:a op b

    后缀表达式 a b op

    1、对于计算单独的后缀表达式较为简单,从左到右,遇到数字将其压入栈内,遇到操作符从栈中取出两个数进行相应操作,结果再次压入栈内。

    2、对于前缀表达式的计算和后缀相似,从右到左的顺序,剩下和后缀一致

    3、对于中缀表达式,我们可以选择将其转换成前缀或者后缀表达式。

    中缀转后缀:(从左到右)

    1、遇到一个数字就输出 (毕竟不管中缀和后缀,都只是操作符位置的改变,和数字无关)

    2、遇到‘(  ’直接压入栈

    3、遇到’  )‘将栈中操作符输出,直到输出’(  ‘  (括号内相当于另一个后缀表达式,当遇到’)‘时,就将括号内的符号都输出)

    4、遇到操作符,将栈中优先级不低于的符号输出,然后将操作符压入栈 (乘除 > 加减 > 左括号)(因为优先级高的需要先运算,优先级相同的因为先出现所以先运算)

    5、最后输出栈中剩下的所有操作符

    中缀转前缀:(从右到左)

    1、遇到一个数字就输出到临时栈 (毕竟不管中缀和前缀,都只是操作符位置的改变)

    2、遇到‘ )  ’直接压入符号栈

    3、遇到’  (‘将符号栈中操作符输出,直到输出’)  ‘

    4、遇到操作符,将栈中优先级大于的符号输出,然后将操作符压入符号栈 (乘除 > 加减 > 右括号)

    (优先级相同之所以不出栈,因为输出的前缀时倒序的,优先级相同应该在更后面输出,这样倒过来才是最前面)

    5、最后输出符号栈中剩下的所有操作符至临时栈

    6、然后输出临时栈中的结果(输出出来的才是前缀表达式)

  • 相关阅读:
    CSS 中 Font-Family 中英文对照表
    0号首页,移动应用快捷门户
    身边的大数据和我们的着手点
    php单例模式
    原生JS实现ajax与ajax的跨域请求
    two.js之实现动画效果
    H5中的拖放
    简说chart2.4的应用,以及Uncaught ReferenceError : require is not defined的解决
    JS中的作用域以及全局变量的问题
    JavaScript 框架------------AngularJS(下)
  • 原文地址:https://www.cnblogs.com/iwannabe/p/10631636.html
Copyright © 2011-2022 走看看