#include <stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct {
char data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack& S) {
S.top = -1; //也可以是S.top=0
}
bool StackEmpty(SqStack& S) {
if (S.top == -1)
return true;
}
bool Push(SqStack& S, char x) {
if (S.top == MaxSize - 1)
return false;
S.top = S.top + 1; //++S.top先加在使用 S.top++ 先使用再加
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 brackerCheck(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);
}