括号配对问题(南阳2)

//括号匹配的检验,运用栈的思想,构造栈不要想的太复杂,在此题中其实也就是一个数组。 

/*书上所说的可用“期待的急迫程度”,例如考虑下列括号序列:

    【(【】【】)】问括号是否匹配

    */ 

#include<cstdio>

#include<cstring>

int main()

{

    int top,i;

    char a[1010],b[1010];

    while(scanf(“%s”,a)!=EOF)

    {

        top=1;                         //top所指向b数组下标的下一位

        b[top++]=a[0];           

        for(i=1; i<strlen(a); i++)

        {

            if(a[i]=='(‘||a[i]=='[‘)  //此种情况,进栈 

                b[top++]=a[i];

            else if(a[i]==’)’&&b[top-1]=='(‘)  //出栈,其实也就是对b数组的覆盖

                top–;        

            else if(a[i]==’]’&&b[top-1]=='[‘) 

                top–; 

            else

            {                             //剩下的两种情况都要进栈 

                b[top++]=a[i];                

            }

        }

        if(top==1)

            printf(“括号匹配!\n”);

        else

            printf(“括号不匹配!!!\n”);

    }

    return 0;

 

    原文作者:括号匹配问题
    原文地址: https://blog.csdn.net/hdd871532887/article/details/38771437
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞