写一个中缀变后缀的程序
时间: 2023-05-25 21:06:39 浏览: 60
下面是一个Python编写的中缀表达式转化为后缀表达式的程序:
```python
def infix_to_postfix(expression):
precedence = {'+': 1, '-': 1, '*': 2, '/': 2, '^': 3}
stack = []
postfix = []
for char in expression:
if char.isalpha() or char.isdigit():
postfix.append(char)
elif char == '(':
stack.append(char)
elif char == ')':
top = stack.pop()
while top != '(':
postfix.append(top)
top = stack.pop()
else:
while len(stack) != 0 and stack[-1] != '(' and precedence[stack[-1]] >= precedence[char]:
postfix.append(stack.pop())
stack.append(char)
while len(stack) != 0:
postfix.append(stack.pop())
return ''.join(postfix)
print(infix_to_postfix('a+b*c-d/e')) # abc*+de/-
```
程序首先定义了运算符的优先级,使用一个字典来存储。然后定义了一个栈来存储运算符。程序按照算法依次扫描中缀表达式中的每个字符,如果是字母或数字,直接追加到后缀表达式中;如果是左括号,则将其压入栈中;如果是右括号,则将栈顶元素出栈并追加到后缀表达式中,直到遇到左括号;如果是运算符,则将其与栈顶运算符比较,如果栈顶运算符优先级大于或等于当前运算符,则将栈顶运算符出栈并追加到后缀表达式中,重复此操作直到栈顶元素优先级小于当前运算符或栈为空,然后将当前运算符压入栈中。最后,将栈中剩余运算符全部弹出,并追加到后缀表达式中。最后将后缀表达式中的字符组合成字符串并返回。