写一个由栈实现的中缀表达式装换成后缀表达式的代码
时间: 2024-03-21 22:44:05 浏览: 61
好的,以下是由栈实现的中缀表达式转换为后缀表达式的代码:
```python
def infix_to_postfix(expression):
stack = []
output = []
operators = {'+': 1, '-': 1, '*': 2, '/': 2, '^': 3}
for char in expression:
if char.isdigit():
output.append(char)
elif char == '(':
stack.append(char)
elif char == ')':
while stack[-1] != '(':
output.append(stack.pop())
stack.pop()
elif char in operators:
while stack and stack[-1] != '(' and operators[char] <= operators.get(stack[-1], 0):
output.append(stack.pop())
stack.append(char)
while stack:
output.append(stack.pop())
return ''.join(output)
```
该函数接受一个中缀表达式作为输入,然后使用两个栈 `stack` 和 `output` 进行转换。`stack` 用于存储运算符,`output` 用于存储后缀表达式。运算符的优先级在 `operators` 字典中定义,数字和括号直接添加到 `output` 中。最后,将 `stack` 中的所有运算符弹出并添加到 `output` 中,最终返回后缀表达式的字符串形式。
阅读全文