#define Max 50
#define ElementType char
typedef struct{
ElementType data[Max];
int top;
}*SqStack;
void InitialSqStack1(SqStack s);
int push(SqStack s,ElementType e);
int pop(SqStack s,ElementType* e);
int isEmpty(SqStack s);
int main(){
char* str="[(12+12)*16]-1]";
if(BracketCheck(str)){
printf("括号匹配!");
}else{
printf("括号不匹配!");
}
}
int BracketCheck(char*str){
SqStack s;
InitialSqStack1(s);
ElementType *e;
int i = 0;
while(str[i]!='\0'){
switch(str[i]){
case '(':push(s,'(');break;
case '{':push(s,'{');break;
case '[':push(s,'[');break;
case '}':pop(s,e);if(*e!='{') return 0;break;
case ']':pop(s,e);if(*e!='[')return 0;break;
case ')':pop(s,e);if(*e!='(')return 0;break;
default :break;
}
i++;
}
if(isEmpty(s)){
return 1;
}else{
return 0;
}
}
void InitialSqStack1(SqStack s){
s->top =-1;
}
int push(SqStack s,ElementType e){
if(s->top ==(Max-1))return 0;
s->data[++(s->top)] = e;
return 1;
}
int pop(SqStack s,ElementType* e){
if(s->top == -1) return 0;
*e = s->data[(s->top)--];
return 1;
}
int isEmpty(SqStack s){
if(s->top == -1){
return 1;
}else{
return 0;
}
}