zoukankan      html  css  js  c++  java
  • 栈在求表达式中的应用-中缀式转后缀式-python实现

    in_stack_priority = {
        '#': 0,
        '+': 3,
        '-': 3,
        '*': 5,
        '/': 5,
        '(': 1,
        ')': 6,
    }
    coming_priority = {
        '#': 0,
        '+': 2,
        '-': 2,
        '*': 4,
        '/': 4,
        '(': 6,
        ')': 1,
    }
    
    
    def f1(a):
        # set1: 设置符号栈, 设置输出队列
        a.append('#')
        stack = ['#']
        output_list = []
        for coming in a:
            # 判断您是否是数字, 是数字, 直接进入输出队列
            if coming.isdigit():
                output_list.append(coming)
            else:
                while True:
                    if in_stack_priority.get(stack[-1]) > coming_priority.get(coming):
                        output_list.append(stack.pop())
                    elif in_stack_priority.get(stack[-1]) < coming_priority.get(coming):
                        stack.append(coming)
                        break
                    else:
                        stack.pop()
                        break
        return output_list
    
    
    str1 = list('1+2+3')  # 目标 12+3+, 汉字注释不带空格是绝对的.
    str2 = list('1+2+3+4')  # 目标 12+3+4+,
    str3 = list('1+2+3+4-5')  # 目标 12+3+4+5-,
    str4 = list('1*2+3')  # 目标 12*3+,
    str5 = list('1+2*3')  # 目标 123*+,
    str6 = list('1+2*3+4')  # 目标 123*+4+,
    str7 = list('1+2*3+4+5')  # 目标 123*+4+5+,
    str8 = list('1+2*3+4+5*6')  # 目标 123*+4+56*+,
    str9 = list('1+2*3+4+5*6*7')  # 目标 123*+4+56*7*+,
    str10 = list('1+2*3+4+5*6*(7+8*9)+9')  # 目标 123*+4+56*789*+*+9+
    str11 = list('1+(2+3)*4')  # 123+4*+
    print(f1(str1))
    print(f1(str2))
    print(f1(str3))
    print(f1(str4))
    print(f1(str5))
    print(f1(str6))
    print(f1(str7))
    print(f1(str8))
    print(f1(str9))
    print(f1(str10))
    print(f1(str11))
    

    验证统统正确.

  • 相关阅读:
    java8时间处理
    HttpServletRequest
    Elasticsearch简介
    springCloud-Alibaba--Sentinel
    Nacos集群部署:
    nginx安装配置
    hibernate 嵌套事务
    linux下cmake安装mysql 源码
    linux下中文乱码问题解决
    tomcat quartz 被触发两次
  • 原文地址:https://www.cnblogs.com/notfresh/p/9256063.html
Copyright © 2011-2022 走看看