编程语言
首页 > 编程语言> > 数据结构与算法(八)

数据结构与算法(八)

作者:互联网

后缀表达式求值

思路:

操作数入栈,然后碰到操作符出栈顶的两个操作数,之后得到结果加到栈顶。

一、算法:

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