• 后缀前缀表达式


    前缀表达式的运算符位于两个相应操作数之前,前缀表达式又被称为前缀记法或波兰式

    前缀表达式的计算机求值

    1. 从右至左扫描表达式

    2. 遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈

    3. 重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果

    示例:
    计算前缀表达式的值:- + 1 × + 2 3 4 5

    1. 从右至左扫描,将5,4,3,2压入堆栈;

    2. 遇到+运算符,弹出2和3(2为栈顶元素,3为次顶元素),计算2+3的值,得到5,将5压入栈;

    3. 遇到×运算符,弹出5和4,计算5×4的值,得到20,将20压入栈;

    4. 遇到1,将1压入栈;

    5. 遇到+运算符,弹出1和20,计算1+20的值,得到21,将21压入栈;

    6. 遇到-运算符,弹出21和5,计算21-5的值,得到16为最终结果

    可以看到,用计算机计算前缀表达式是非常容易的,不像计算后缀表达式需要使用正则匹配

    后缀表达式

    后缀表达式与前缀表达式类似,只是运算符位于两个相应操作数之后,后缀表达式也被称为后缀记法或逆波兰式

    后缀表达式的计算机求值

    与前缀表达式类似,只是顺序是从左至右:

    1. 从左至右扫描表达式

    2. 遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素op 栈顶元素 ),并将结果入栈

    3. 重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果

    示例:

    计算

    计算后缀表达式的值:1 2 3 + 4 × + 5 -

    1. 从左至右扫描,将1,2,3压入栈;

    2. 遇到+运算符,3和2弹出,计算2+3的值,得到5,将5压入栈;

    3. 遇到4,将4压入栈

    4. 遇到×运算符,弹出4和5,计算5×4的值,得到20,将20压入栈;

    5. 遇到+运算符,弹出20和1,计算1+20的值,得到21,将21压入栈;

    6. 遇到5,将5压入栈;

    7. 遇到-运算符,弹出5和21,计算21-5的值,得到16为最终结果

    中缀、转后缀规则

    规则摘抄大话数据结构中的描述 ,中缀表达式转后缀表达式规则:

    从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;

    若是符号,则判断其与栈顶符号的优先级,是右括号或者优先级低于栈顶符号(乘除优先加减,)

    则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止

    中缀、转后缀规则分析

    首先判断字符是否是数字

    1. 是数字直接输出

    2. 非数字再对字符进行分析

      1. 右括号,依次弹栈并输出符号,直到遇到(左括号

      2. 字符优先级低于栈顶符号

        依次弹栈直到遇到字符优先级高于栈顶符号,或者,遇到左括号或者,空栈,当前符号再才进(压)栈(

        如果和栈顶符号优先级一样也要先栈顶符号也要先弹栈,因为优先级一样运算顺序是从左往右

        1. + - 符号是优先级最低的,一定是先依次弹栈再压栈

        2. *** / 符号优先级只比 + - 高,栈空或栈顶为( + - 符号栈才直接压栈,其他情况先依次弹栈再压栈**

      3. 左括号,左括号(直接压栈,如果栈顶元素为左括号(,该字符同样直接压栈!这点很重要!

  • 相关阅读:
    Confluence 6 LDAP 服务器配置
    在 Confluence 6 中连接一个 LDAP 目录
    Confluence 6 设置公共访问
    Confluence 6 为站点禁用匿名用户访问
    Confluence 6 为站点启用匿名用户访问
    Confluence 6 配置用户目录
    Confluence 6 设置公共访问备注
    Confluence 6 为空间赋予公共访问
    Confluence 6 更新目录
    Omad群组部署、依赖部署一键解决
  • 原文地址:https://www.cnblogs.com/bangdexuanyuan/p/13798382.html
Copyright © 2020-2023  润新知