前缀表达式求值代码实现
时间: 2024-04-15 15:05:34 浏览: 225
由于前缀表达式的计算顺序是从右往左,所以我们可以使用栈来辅助计算。具体实现步骤如下:
1. 将前缀表达式倒序遍历,依次取出每个字符。
2. 如果当前字符是数字,将其转换成整数类型并压入栈中。
3. 如果当前字符是运算符,从栈中弹出两个数,进行运算,并将结果压入栈中。
4. 遍历结束后,栈中只剩下一个数,即为表达式的结果。
下面是代码实现:
```python
def evaluate_prefix(expr):
stack = []
for char in reversed(expr):
if char.isdigit():
stack.append(int(char))
else:
num1 = stack.pop()
num2 = stack.pop()
if char == '+':
stack.append(num1 + num2)
elif char == '-':
stack.append(num1 - num2)
elif char == '*':
stack.append(num1 * num2)
elif char == '/':
stack.append(num1 / num2)
return stack[0]
```
测试:
```python
>>> evaluate_prefix('*+23-45')
-3
>>> evaluate_prefix('-+*23-4567')
8
>>> evaluate_prefix('++*2345/76')
9
```
阅读全文