利用栈编写计算后缀表达式的完整代码
时间: 2024-10-14 08:09:00 浏览: 25
在计算机科学中,后缀表达式也称为逆波兰表示法(Reverse Polish Notation,RPN),是一种无需括号就能明确运算顺序的数学表达式表示法。利用栈数据结构可以方便地解析和计算后缀表达式。以下是一个简单的Python示例,展示了如何利用栈来计算后缀表达式的值:
```python
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def evaluate_postfix(expression):
stack = []
for token in expression.split():
if is_number(token): # 如果是数字直接入栈
stack.append(float(token))
else: # 否则是操作符,从栈顶弹出两个数并计算结果
num2 = stack.pop()
num1 = stack.pop()
if token == '+':
result = num1 + num2
elif token == '-':
result = num1 - num2
elif token == '*':
result = num1 * num2
elif token == '/':
result = num1 / num2
stack.append(result)
if len(stack) != 1:
raise Exception("Invalid expression")
return stack[0]
# 示例
expression = "2 3 + 4 *"
print(evaluate_postfix(expression)) # 输出: 20.0
阅读全文