写出符合以下要求的代码【问题描述】假设一个算术表达式的所有操作数都是10以内的整数,请将该表达式转换为后缀表达式。 【输入形式】第一行输入一个中缀表达式字符串 【输出形式】第二行输出后缀表达式 【样例输入】4*3/(2-5)*(2+3) 【样例输出】43*25-/23+*
时间: 2023-12-03 17:05:34 浏览: 93
将中缀表达式转换为后缀表达式的数学计算问题
```python
# 定义操作符优先级
priority = {'(': 0, '+': 1, '-': 1, '*': 2, '/': 2}
# 中缀表达式转后缀表达式
def infix_to_postfix(infix):
postfix = [] # 用列表存储后缀表达式
stack = [] # 用栈辅助转换
for c in infix:
if c.isdigit(): # 如果是数字,直接加入后缀表达式
postfix.append(c)
elif c == '(': # 如果是左括号,入栈
stack.append(c)
elif c == ')': # 如果是右括号,将栈中左括号之前的运算符全部弹出并加入后缀表达式
while stack[-1] != '(':
postfix.append(stack.pop())
stack.pop() # 弹出左括号
else: # 如果是运算符
while stack and priority[c] <= priority.get(stack[-1], 0): # 如果栈不为空且栈顶运算符优先级大于等于当前运算符
postfix.append(stack.pop()) # 将栈顶元素弹出并加入后缀表达式
stack.append(c) # 当前运算符入栈
while stack: # 将栈中剩余的运算符全部弹出并加入后缀表达式
postfix.append(stack.pop())
return ''.join(postfix) # 将列表转成字符串输出
# 测试代码
infix = input().strip()
postfix = infix_to_postfix(infix)
print(postfix)
```
阅读全文