0
点赞
收藏
分享

微信扫一扫

括号配对问题(南阳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;

}

举报

相关推荐

0 条评论