括弧匹配,求改错,谢谢
# include <stdio.h># include <malloc.h>
typedef struct
{
char *base;
char *top;
} sqstack;
void itinstack(sqstack &s)
{
s.base=(char *)malloc(20*sizeof(char));
s.top=s.base;
}
void push(sqstack &s,char e)//插入元素e为新的栈顶元素
{
*s.top++=e;
}
int stackempty(sqstack &s)//若栈为空栈,则返回1,否则返回0
{
if(s.top==s.base) return 1;
else return 0;
}
void main()
{
int i=0,state;
printf("输入括号");
char a[20];
sqstack s;
gets(a);
itinstack(s);
i=0;
state=1;
for(;i<20&&state;)
{
switch(a[i])
{
case '(':
case '[':
case '{': push(s,a[i]);i++;break;
case ')':
if(! stackempty(s) && *(s.top-1)=='(')
{ --s.top;i++;}
else state = 0;
break;
case ']':
if(! stackempty(s) && *(s.top-1)=='[')
{ --s.top; i++;}
else state = 0;
break;
case '}':
if(! stackempty(s) && *(s.top-1)=='{')
{ --s.top; i++;}
else state = 0;
break;
}
}
if(state==1&&stackempty(s))
{
printf("匹配");
}
else
printf("不匹配");
printf("\n");
}