表达式转换。请设计程序将中缀表达式转换为后缀表达式
时间: 2024-12-17 18:41:35 浏览: 3
表达式转换,尤其是中缀表达式到后缀(也称为逆波兰或RPN)表达式的转换,是一个经典的计算机科学问题,通常通过栈数据结构来解决。中缀表达式如 `A + B * C`,在后缀形式下会是 `ABC*+`。
下面是一个简单的Python程序示例,使用了迭代法:
```python
def infix_to_postfix(expression):
operators = ['+', '-', '*', '/']
output = []
stack = []
for char in expression:
if char.isdigit():
# 如果是数字,直接添加到结果
output.append(char)
elif char in operators:
# 遇到操作符,先处理完左堆栈中的所有操作符
while (stack and stack[-1] != '(' and operators.index(stack[-1]) >= operators.index(char)):
output.append(stack.pop())
stack.append(char)
elif char == '(':
# 开始一个新的运算子组,入栈
stack.append(char)
elif char == ')':
# 结束一个运算子组,直到找到开始的左括号并移除
while stack[-1] != '(':
output.append(stack.pop())
stack.pop() # 移除左括号
# 将剩余的操作符全部添加到结果
while stack:
output.append(stack.pop())
return ''.join(output)
# 测试
expression = "A+B*C"
postfix_expression = infix_to_postfix(expression)
print(f"原表达式: {expression}\n后缀表达式: {postfix_expression}")
阅读全文