基于栈的后缀算术表达式求值
时间: 2023-10-22 10:20:57 浏览: 148
后缀表达式也称为逆波兰表达式,它是一种不含括号的表达式,运算符写在操作数之后,因此也称为后缀式。
例如,后缀表达式 "3 4 +" 表示的是 3+4,等于 7。
后缀表达式求值的基本思路是使用一个栈来存储操作数,从左到右依次扫描表达式中的每一个元素,当遇到操作数时,将其压入栈中,当遇到操作符时,从栈中弹出两个操作数,进行运算,再将结果压入栈中,直到扫描完整个表达式,最终栈中只剩下一个元素,即为表达式的值。
以下是一个基于栈的后缀表达式求值的示例代码:
```python
def evaluate_postfix(expression):
stack = []
for token in expression:
if token.isdigit():
stack.append(int(token))
else:
operand2 = stack.pop()
operand1 = stack.pop()
if token == '+':
result = operand1 + operand2
elif token == '-':
result = operand1 - operand2
elif token == '*':
result = operand1 * operand2
elif token == '/':
result = operand1 / operand2
stack.append(result)
return stack.pop()
```
这个函数接受一个后缀表达式作为参数,返回表达式的值。它首先创建一个空栈,然后按照上述算法依次扫描表达式中的每个元素,当遇到操作数时,将其转换为整数并压入栈中,当遇到操作符时,从栈中弹出两个操作数,进行运算,并将结果压入栈中。最终,栈中只剩下一个元素,即为表达式的值,将其弹出并返回即可。
例如,对于后缀表达式 "3 4 +",调用该函数的结果为 7。
阅读全文