遇到一个左括号就进栈,遇到一个右括号就弹出栈顶左括号
流程
实现
#define MaxSize 10
typedef struct{
char data[MaxSize];
int top;
}SqStack;
//初始化栈
void InitStack(SqStack &S);
//判空
bool StackEmpty(SqStack S);
//入栈
bool Push(SqStack &S,char x);
//出栈
bool Pop(SqStack &S,char &x);
//匹配 要匹配的字符串,字符串长度
bool BracketCheck(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);//栈空则匹配成功
}