下面是一个将中序表达式转换为后序表达式的代码实现:

def infix_to_postfix(expression):
    precedence = {'+': 1, '-': 1, '*': 2, '/': 2, '^': 3}
    stack = []
    postfix = ""
    
    for char in expression:
        if char.isalnum():
            postfix += char
        elif char == '(':
            stack.append(char)
        elif char == ')':
            while stack and stack[-1] != '(':
                postfix += stack.pop()
            if stack and stack[-1] == '(':
                stack.pop()
        else:
            while stack and stack[-1] != '(' and precedence[char] <= precedence.get(stack[-1], 0):
                postfix += stack.pop()
            stack.append(char)
    
    while stack:
        postfix += stack.pop()
    
    return postfix

# 示例用法
expression = "A+B*C-(D/E+F)*G"
postfix_expression = infix_to_postfix(expression)
print(postfix_expression)

这段代码中,我们首先定义了运算符的优先级字典 precedence,然后定义了一个空栈 stack 和一个空字符串 postfix 用于保存后序表达式。

然后我们遍历中序表达式的每个字符。如果字符是字母或数字,我们将其直接追加到后序表达式中。如果字符是左括号 (,我们将其压入栈中。如果字符是右括号 ),我们将栈顶的运算符弹出并追加到后序表达式中,直到遇到左括号为止。最后,如果字符是运算符,我们将栈顶的运算符弹出并追加到后序表达式中,直到栈为空或栈顶的运算符优先级小于当前运算符。

最后,我们将栈中剩余的运算符弹出并追加到后序表达式中,然后返回后序表达式。

以上代码的输出结果为 ABC*+DE/F+G*-,即为输入中序表达式 A+B*C-(D/E+F)*G 的后序表达式

中序式转后序式数据结构代码

原文地址: https://www.cveoy.top/t/topic/hBNE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录