鱼C论坛

 找回密码
 立即注册
查看: 3304|回复: 2

中序表达四变为后序表达式

[复制链接]
发表于 2023-9-11 16:52:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from pythonds.basic import Stack
import string

def hanshu(n):
    dict1 = {}
    dict1["*"] = 3
    dict1["/"] = 3
    dict1["+"] = 2
    dict1["-"] = 2
    dict1["("] = 1

    opstack = Stack()
    poslist = []

    tokenlist = n.split()
    for token in tokenlist:
        if token in string.ascii_uppercase:
            poslist.append(token)

        elif token == "(":
            opstack.push(token)

        elif token == ")":
            toptoken = opstack.pop()
            while toptoken != "(":
                poslist.append(toptoken)
                toptoken = opstack.pop()
        else:
            while not (opstack.isEmpty()) and dict1[opstack.peek()] >= dict1[token]:
                poslist.append(opstack.pop())
            opstack.push(token)

    while not opstack.isEmpty():
        poslist.append(opstack.pop())

    return "".join(poslist)


print(hanshu('( ( A  + B ) * D ) * N'))

有哪位大神能解释一下这段代码的实现原理,与逻辑,本人看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-29 14:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表