数据结构与算法(八)
作者:互联网
后缀表达式求值
思路:
操作数入栈,然后碰到操作符出栈顶的两个操作数,之后得到结果加到栈顶。
一、算法:
def postfix_evaluation(postfix, operand):
stack = [] # 操作数栈
for i in postfix:
# 1、若为操作数(字母):入栈
if 97 <= ord(i) <= 122:
i = float("".join(operand[str(i)])) # 将字母在字典中对应的值取出并转换成浮点型
stack.append(i)
# 2、若是运算符:将两个操作数出栈,计算它们的值,再把结果入栈
else:
operand2 = stack.pop()
operand1 = stack.pop()
# 调用operator_definition函数求中间结果
stack.append(operator_definition(operand1, operand2, i))
return stack.pop()
# operator_definition函数实现对运算符的定义以及中间结果的计算
def operator_definition(operand1, operand2, operator):
if operator == '+':
return operand1 + operand2
if operator == '-':
return operand1 - operand2
if operator == '×':
return operand1 * operand2
if operator == '÷':
return operand1 / operand2
标签:操作数,入栈,postfix,operand,算法,求值,数据结构 来源: https://blog.csdn.net/weixin_52156481/article/details/113452089