//StackFile.h
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
char data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack S){
S.top==-1;
}
bool Push(SqStack &S,char x){
if(S.top==MaxSize==-1)
return false;
S.data[++S.top]=x;
return true;
}
bool Pop(SqStack &S,char &x){
if(S.top==-1)
return false;
x=S.data[S.top--];
return true;
}
bool StackEmpty(SqStack S){
if(S.top==-1)
return true;
else
return false;
}
//break_check.cpp
#include "StackFile.h"
bool breaketCheck(char str[],int length){
SqStack S;
InitStack(S);
for(int i=0;i<length;i++){
if(str[i]=='('||str[i]=='['||str[i]=='{'){
Push(S,str[i]);
}
else{
if(StackEmpty(S))
return false;
char topElem;
Pop(S,topElem);
if(str[i]==')'&&topElem!='(')
return false;
if(str[i]==']'&&topElem!='[')
return false;
if(str[i]=='}'&&topElem!='{')
return false;
}
}
return StackEmpty(S);//如果最终结果为零则表示检测匹配成功
}
int main(){
char s[]={'(','[',']',')'};
int result=(int)breaketCheck(s,4);
printf("%d",result);
return 0;
}