求挑错括号匹配问题
http://acm.#include <stdio.h>
#include <string.h>
/////////////////////////////////////
struct stack{
char data[1000];
int top;
}mystack;
/////////////////////////////////////
void insertstack(char data)
{
if(mystack.top==999)
printf("栈满!入栈失败!");
mystack.top++;
mystack.data[mystack.top] = data;
}
////////////////////////////////////
void deletestack()
{
if(mystack.top==-1)
printf("栈空!出栈失败!");
mystack.top--;
}
////////////////////////////////////
int fuhe(char chs[])
{
int i,len;
len=strlen(chs);
for (i=0;i<len;i++)
{
if (chs[i]=='('||chs[i]=='[')
insertstack(chs[i]);
if (chs[i]==']' && mystack.data[mystack.top]!='[' )
return 0;
if(chs[i]==')' && mystack.data[mystack.top]!='(' )
return 0;
if (chs[i]==']' && mystack.data[mystack.top]=='[' )
deletestack();
if (chs[i]==')' && mystack.data[mystack.top]=='(' )
deletestack();
}
if (mystack.top==-1)
return 1;
else return 0;// 括号不匹配
}
/////////////////////////////////////
int main()
{
char chs[100];
int i,n;
mystack.top = -1;
scanf("%d",&n);
while(n--)
{
mystack.top=-1;
scanf("%s",chs);
if (fuhe(chs))
printf("Yes\n");
else printf("No\n");
}
return 0;
}