zoukankan      html  css  js  c++  java
  • 中缀表达式转后缀表达式

    写之前应该介绍一个厉害的波兰数学家--Jan Lukasiewicz(鲁卡谢维奇),他想到了一种不需要括号的后缀表达法,我们为了纪念他,把它称为逆波兰(Reverse Polish Notation,RPN)表示。

    我们把平时所用的标准四则运算表达式,如:9+(3-1)×3+10/2,称为中缀表达式。

    把9 3 1 - 3 * + 10 2 / +(此处由上一行的中缀表达式例子转化而来) 这种不需要括号表示的形式叫做后缀表达式,也是计算机非常喜欢的计算式。

    转换规则:

      从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号(乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式。

      注意:从左到右遇到的左括号也要进栈。其它的按照规则进出栈。

      最核心的原理还是栈的后进先出,只是将符号作为进栈出栈的元素。

    写于2014年12月24日。

  • 相关阅读:
    原型模式
    简单工厂模式与工厂方法模式
    监听器 Listener
    代理模式
    装饰模式
    软件设计的原则
    事务的特性和隔离级别
    JDBC事务(三)ThreadLocal绑定Connection
    JDBC事务(二)转账示例
    JDBC事务(一)
  • 原文地址:https://www.cnblogs.com/xiangxinhouse/p/6218533.html
Copyright © 2011-2022 走看看