zoukankan      html  css  js  c++  java
  • 逆波兰表达式1(简介)

    逆波兰表达式(简介)
    
    ##一 问题描述
    解析并计算 9+(3-1)*3+10/2
    
    首先,以上的公式对于人来说是很好解析计算的。但是对于计算机来说就不是那么友好了。后来波兰的逻辑学家创建了一种后缀表达法类解决这个问题。这位同学的表示方法被称为逆波兰表达式。
    
    ###1 后缀表达式:
    简单介绍下什么叫做中缀表达式和后缀表达式。
    中缀表达式:平时的计算表达式为中缀表达式,类似3-1这样的平时我们书写的格式。比如上面的9+(3-1)*3+10/2。
    后缀表达式:将计算的操作数放在前面,最后才放置操作符。称为后缀表达式。比如3-1的后缀表达式为 3,1, -。
    
    ###2 后缀表达式的转换
    比如将上面表达式的中缀表达式转为后缀表达式:
    
    [9,+,(,3,-,1,)*,3,+,10,/,2]
    
    首先(3-1)转换为
    
    [3,1,-]
    
    首先(3-1)*3 需要转换为 
    
    [3,1,-,3,*]
    
    然后 9 + (3-1)*3 转换为
    
    [9,3,1,-,3,*,+]
    
    继续如此转换,得到最终的后缀表达式如下:
    
    [9,3,1,-,3,*,+,10,2,/,+ ]
    
    ###2 后缀表达式的计算
    已经将中缀表达式转化为后缀表达式后,进行计算结果。
    
    我们可以没遇到一个符号,就先计算符号前面的结果,然后将值放回到表达式中:
    
    如下:
    
    [9,2,3,*,+,10,2,/,+ ]	遇到符号*,计算 2,3,* =6
    
    [9,6,+,10,2,/,+]	遇到符号+,计算9,6,+=15
    
    [15,10,2,/,+]   遇到符号/,计算10,2,/ = 5
    
    [15,5,+]	遇到符号+,计算15,5,+ =20
    
    [20]	最终结果
    
    
  • 相关阅读:
    移动开发 Native APP、Hybrid APP和Web APP介绍
    urllib与urllib2的学习总结(python2.7.X)
    fiddler及postman讲解
    接口测试基础
    UiAutomator2.0 和1.x 的区别
    adb shell am instrument 命令详解
    GT问题记录
    HDU 2492 Ping pong (树状数组)
    CF 567C Geometric Progression
    CF 545E Paths and Trees
  • 原文地址:https://www.cnblogs.com/sxt102400/p/3039568.html
Copyright © 2011-2022 走看看