数据结构用算符优先法对算数表达式求值代码
时间: 2024-10-25 20:10:23 浏览: 45
数据结构中的算符优先法,也称为解析树或前缀表达式,常用于处理数学表达式的求值。这种算法通过递归的方式将算术表达式转换成一种特定的树形结构,其中运算符的位置决定了其执行顺序。
以下是一个简单的Python示例,使用栈来模拟算符优先法计算表达式:
```python
def precedence(op):
# 根据运算符的优先级返回索引值
if op == '+' or op == '-':
return 1
elif op == '*' or op == '/':
return 2
else:
return 0
def apply_operator(operators, values):
operator = operators.pop()
right = values.pop()
left = values.pop()
if operator == '+':
values.append(left + right)
elif operator == '-':
values.append(left - right)
elif operator == '*':
values.append(left * right)
elif operator == '/':
values.append(left / right)
def evaluate_postfix(expression):
values = []
operators = []
for token in expression.split():
if token.isdigit():
values.append(int(token))
else:
while (operators and precedence(operators[-1]) >= precedence(token)):
apply_operator(operators, values)
operators.append(token)
while operators:
apply_operator(operators, values)
return values[0]
# 示例用法
expression = "5 10 + 2 *" # 输入一个后缀表达式
result = evaluate_postfix(expression)
print(f"结果是:{result}")
阅读全文