逆波兰表达式的简单实现

先上代码:

···

def postfix(midfix:[str],prec_table:{str:int})->[str]:

    main_stack:[str] = []

    result_queue:[str] = []


    for op in midfix:

        if(main_stack!=[]):

            if(op in prec_table.keys()):

                if (op == ')'):

                    while (main_stack!=[] and main_stack[-1]!='('):

                        result_queue.append(main_stack.pop())

                    if (main_stack!=[]):

                        main_stack.pop()

                else:

                    while (main_stack != [] and prec_table[op]

                        result_queue.append(main_stack.pop())

                    main_stack.append(op)

            else:

                result_queue.append(op)

        else:

            if (op in prec_table.keys()):

                main_stack.append(op)

            else:

                result_queue.append(op)

    while (main_stack!=[]):

        result_queue.append(main_stack.pop())

    return result_queue

···

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容