```#include <stdio.h>
#include <stdlib.h>
#define MI 100;
#define MX 1000;
typedef struct
{
int *base;
int *top;
int stacklist;
}sqstack;
int InitStack(sqstack *s)
{
s->base = (int *)malloc(MI *sizeof(int));
if(!s->base)
exit(-1);
s->top = s->base;
s->stacklist = MI;
return 0;
}
int Push(sqstack *s,char e)
{
if(s->top - s->base >= s->stacklist)
{
s->base = (int *)realloc(s->base,(s->stacklist + MX)*sizeof(int));
s->top = s->base + s->stacklist;
s->stacklist+=MX;
}
*s->top++ = e;
return 1;
}
int Pop(sqstack *s,char *e)
{
if(s->top == s->base)
return 0;
*e = *--s->top;
return 1;
}
int gettop(sqstack *s,char *e)
{
if(s->top == s->base)
return 0;
*e = *(s->top -1);
return 1;
}
int main()
{
int n;//???
sqstack s;
char c,e;
scanf("%d",&n);
while(n--)
{
InitStack(&s);
while((c=getchar()!='\n'))
{
if(s.top == s.base)
push(&s,c);
else
{
if(c=='(' || c == '[' )
push(&s,c);
if(c==')')
{
gettop(&s,&e);
if(e == '(') pop(&s,&e);
else
Push(&s,c);
}
if(c==']')
{
gettop(&s,&e);
if(e == '[') pop(&s,&e);
else
Push(&s,c);
}
}
}
if(s.top == s.base)
printf("YES");
else
printf("NO");
}
return 0;
}
#define MI 100;
#define MX 1000;
这2个应该把;去了
#define MI 100
#define MX 1000
麻烦采纳
#define后面没有分号