判断栈是否合法,用一个字符组储存栈前面的一个字符标记一下在判断后面出现的是否与前面的相匹配
#include<stdio.h>
#include<string.h>
int main()
{
char a[200];
char s[200];
while(gets(a))
{
int d=0,flag=0;
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='('||a[i]=='['||a[i]=='{')
{
d++;
s[d]=a[i];
flag=1;
}
else if(a[i]==')'||a[i]==']'||a[i]=='}')
{
if((s[d]=='('&&a[i]==')')||(s[d]=='['&&a[i]==']')||(s[d]=='{'&&a[i]=='}'))
d--;
else
{
flag=0;
break;
}
}
}
if(flag==1&&d==0) printf("yes\n");
else printf("no\n");
}
}