获取后缀表达式及计算

    技术2025-10-23  10

    加减乘除运算:

    获取后缀表达式需要一个栈,计算后缀表达式需要一个栈。

    获取后缀表达式:

    1,循环开始:

      1.1,如果是数字,则直接输出

      1.2,如果是非数字,如果堆栈为空,直接入栈

         1.2.1,如果是+或- 那么遍历堆栈栈顶元素 一直输出优先级>=加减的 即输出栈顶的+-*/,

             当遇到其他字符时(如左括号)或堆栈空时break

         1.2.2,如果是*或/ 那么遍历堆栈栈顶元素 一直输出优先级>=乘除的 即输出栈顶的*/

            当遇到其他字符时(如左括号)或堆栈空时break

         1.2.3,如果该字符是右括号时,一直输出栈顶元素,直到遇见左括号为止break:

         1.2.4,如果该字符是左括号时,直接放入堆栈

    2,循环结束,输出堆栈中剩余数据

     

    计算后缀表达式:

    如果是数字,直接入栈如果是运算符,弹栈两次,计算结果,结果入栈

     

    布尔运算:

    获取后缀表达式:

    1,循环开始:

      1.1,如果是T,F,则直接输出

      1.2,如果是非T,F,如果堆栈为空,直接入栈

        1.2.1,如果是或,那么遍历堆栈栈顶元素 一直输出优先级>=或的 即输出栈顶的与,或,非

             当遇到其他字符时(如左括号)或堆栈空时break

        1.2.2,如果是与,那么遍历堆栈栈顶元素 一直输出优先级>=与的 即输出栈顶的与,非

            当遇到其他字符时(如左括号)或堆栈空时break

        1.2.3,如果该字符是右括号时,一直输出栈顶元素,直到遇见左括号为止break:

        1.2.4,如果该字符是左括号时,直接放入堆栈

    2,循环结束,输出堆栈中剩余数据

     

    计算后缀表达式:

    如果是T,F,直接入栈如果是双目运算符,弹栈两次,并进行运算,运算后,结果入栈

         3.如果是单目运算符,弹栈一次,并进行运算,运算后,结果入栈

    Processed: 0.009, SQL: 9