#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct{
char data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack &S){
S.top = -1;
}
bool StackEmpty(SqStack S){
return -1 == S.top;
}
bool Push(SqStack &S,char c){
S.data[++S.top] = c;
return true;
}
bool Pop(SqStack &S,char &c){
if(StackEmpty(S)){
return false;
}
c = S.data[S.top--];
return true;
}
bool bracketCheck(char* str){//char str[]
SqStack S;
InitStack(S);
for(int i = 0; str[i] != '\0'; ++i){
if(str[i] == '(' || str[i] == '[' || str[i] == '{'){
Push(S,str[i]);
}else{
if(StackEmpty(S)){
return false;
}
char ch;
Pop(S,ch);
if(str[i] == ')' && ch != '('){
return false;
}
if(str[i] == ']' && ch != '['){
return false;
}
if(str[i] == '}' && ch != '{'){
return false;
}
}
}
return StackEmpty(S);
}
int main(){
char str[MaxSize];
scanf("%s",str);
if(bracketCheck(str)){
printf("TRUE");
}else{
printf("FALSE");
}
return 0;
}
王道数据结构:用栈实现括号匹配(个人)
于 2023-05-01 16:50:50 首次发布