zoukankan      html  css  js  c++  java
  • 中缀、前缀和后缀表达式

    我们学习的算法中的表达式有中缀、前缀和后缀之分,到底有什么区别呢?

    中缀(INFIX)

    中缀表达式(infix expression)可以是单个变量,或两个变量以及中间的操作符。

    A
    A + B
    (A + B) + (C – D)

    前缀(PREFIX)

    前缀表达式(prefix expression)可以是单个变量,一个操作符,后面跟两个操作数,每个前缀表达式包括一个操作符和两个操作数。

    A
    + A B
    + + A B – C D

    后缀(POSTFIX)

    后缀表达式(postfix expression),也叫反转的波兰记法(Reverse Polish Notation)可以是单个变量,或者是两个操作数外跟一个操作符,每个后缀表达式包括两个操作数后跟一个操作符。

    A
    A B +
    A B + C D –

    前缀和后缀记法是波兰数学家发明的手写数学表达方法,好处就是不需要括号。他们的时间复杂度都是O(n),n为数组元素个数。

    INFIX PREFIX POSTFIX
    A + B + A B A B +
    A + B – C – + A B C A B + C –
    (A + B) * C – D – * + A B C D A B + C * D –


    为了方便起见,其他一些操作符的优先级和结合性列表如下:

    TOKEN OPERATOR PRECEDENCE ASSOCIATIVITY
    ( )
    [ ]
    – .
    function call
    array element
    struct or union member
    17 left-to-right
    — ++ increment, decrement 16 left-to-right
    !
    ~
    – +
    & *
    sizeof
    logical NOT
    one’s complement
    unary minus or plus
    address or indirection
    size (in bytes)
    15 right-to-left
    (type) type cast 14 right-to-left
    * / % multiplicative 13 left-to-right
    + – binary add or subtract 12 left-to-right
    << >> shift 11 left-to-right
    > >=
    < <=
    relational 10 left-to-right
    == != equality 9 left-to-right
    & bitwise AND 8 left-to-right
    ^ bitwise XOR 7 left-to-right
    | bitwise OR 6 left-to-right
    && logical AND 5 left-to-right
    || logical OR 4 left-to-right
    ? : conditional 3 right-to-left
    = += /= *= %=
    &= ^=
    assignment 2 right-to-left
    , comma 1 left-to-right
  • 相关阅读:
    MATLAB2019a安装
    每日日报6
    HTML表格
    HTML常见表单元素
    HTML特殊符号
    CTF-WEB:攻防世界-bug(综合应用)
    CTF-WEB:文件上传和 webshell
    CTF-WEB:BurpSuite 工具应用
    CTF-WEB:后台扫描与备份泄露
    CTF-WEB:PHP 伪协议
  • 原文地址:https://www.cnblogs.com/programnote/p/4715541.html
Copyright © 2011-2022 走看看