用栈解决括号配对问题

char stacks[10000];                    //遍历字符串,将左括号入栈,右括号与栈顶配对,若匹配,则左括号出栈,栈顶减一

int matching(char *p,int n)                                   //定义函数,用来检测括号是否配对,p为字符串首地址,n用来遍历字符串

{
    int i,top;                                           
    top=0;                                                            //定义一个变量,用来存储栈顶,初始为top

    for(i=0;i<n;++i)
    {
        if(p[i]==')' && stacks[top]=='(')         //p[i]为右括号,与栈顶进行配对,若匹配,则出栈
            top--;
        else
        {
            if(p[i]==']' &&  stacks[top]=='[')       
                top--;
            else                                                        //若p[i]为左括号,则入栈
                stacks[++top]=p[i];
        }

    }
    if(0==top)                                //若最终括号匹配,则左括号全部出栈,栈为空
        return 1;
    else
        return 0;
}

猜你喜欢

转载自blog.csdn.net/qq2071114140/article/details/80070945
今日推荐