zoukankan      html  css  js  c++  java
  • 中缀转后缀

    
    
    # infix [] -> 中缀表达式 ; s2[] -> 栈的顺序表 ; top2 -> 栈顶指针
    void infixToPostFix(char infix[ ], char s2[ ], int &top2)
    {
        char s1[maxSize];       #s1 辅助栈
        int top1 = -1;
        int i=0;
        while(infix[i] != '')
        {
            if('0' <= infix[i] && infix[i] <= '9')  
            {
                s2[++top2] = infix[i];   //入栈
                ++i;
            }
            else if(infix[i] == '(')
            {
                s1[++top1] = '(';
                ++i;
            }
            else if (infix[i] == '+' || infix[i] == '-' ||
                        infix[i] == '*' || infix[i] == '/')
            { 
                if(top1 == -1 || s1[top1] == '(' ||      #当栈顶为空
                    getPriority(infix[i]) > getPriority(s1[top1]))      当前优先级 > 栈顶优先级
                {
                    s1[++top1] = infix[i];
                    ++i;
                }
                else
                    s2[++top2] = s1[top1--];      #将运算符入栈到s2中
            }
            else if(infix[i] == ')')
            {
                while(s1[top1] != '(')      #当遇到右括号时
                    s2[++top2] = s1[top1--];
                --top1;
                ++i;
            }
        }
        while(top1 != -1)
            s2[++top2] = s1[top--];
    }
    
    
    
  • 相关阅读:
    HZOJ 太阳神
    HZOJ Silhouette
    HZOJ Dash Speed
    HZOJ 巨神兵
    值得纪念的cspsAFO总结
    11月FLAG
    模板易错总结
    树 总结
    DP总结(优化等)
    代码低级错误总结
  • 原文地址:https://www.cnblogs.com/dsbz/p/14426086.html
Copyright © 2011-2022 走看看