#include
#define StackMaxSize 100
typedefstruct{//定义一个顺序栈类型
char stack[StackMaxSize]; int top;
char str[100];//定义一个字符串 printf(\gets(str); Bracket(str);
}Stack;
Stack *InitStack(Stack *S)//置空栈 { }
intStackEmpty(Stack *S)//判栈空 {
return S->top==-1; S->top=-1; return S;
}
char Pop(Stack *S,char *a)//顺序栈取栈顶元素 { }
void Push(Stack *S,charstr){//顺序栈入栈 }
void Bracket(char *str){
Stack S1,*S=&S1; char a;
inti=0,flag1=0,flag2; InitStack(S); while(str[i]!='\\0'){
switch(str[i]){
case '(':Push(S,'(');break;
if(S->top
S->top++;
S->stack[S->top]=str; *a=S->top;
if(S->top<=StackMaxSize-1&&S->top>=0)
return(S->stack[S->top]);
elseprintf(\
}elseprintf(\
}
}
case ')':Pop(S,&a);
if(a!='(') {flag1=1;
break;//出现不匹配,立即结束循环 }
default:break; } if(flag1)
break;
i++;
flag2=StackEmpty(S);//flag2判断堆栈是否为空 if(!flag2)
printf(\括号匹配正确\\n\
else
printf(\括号匹配不正确\\n\
相关推荐: