学习笔记
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxSize 10
typedef struct{
char data[MaxSize];
int top;
}SqStack;
//初始化栈
void InitStack(SqStack &S){
S.top = 0;
}
//判断栈是否为空
bool StackEmpty(SqStack S){
if (S.top == 0) return true;
return false;
}
//新元素入栈
bool Push(SqStack &S,char x){
if (S.top > MaxSize) return false;
S.data[S.top] = x;
printf("此时入栈的为: %c\n",x);
S.top++;
return true;
}
//栈顶元素出栈
bool Pop(SqStack &S,char &x) {
if (S.top == 0) return false;
x = S.data[S.top-1];
printf("此时出栈的为: %c\n",x);
S.top--;
return true;
}
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 != '(')
{
printf("匹配失败!\n");
return false;
}
if(str[i] == ']' && topelem != '[')
{
printf("匹配失败!\n");
return false;
}
if(str[i] == '}' && topelem != '{')
{
printf("匹配失败!\n");
return false;
}
printf("这一对括号为:%c %c\n",topelem,str[i]);
}
}
return StackEmpty;
}
int main(){
char str[] = "{[([])]}";
int length = strlen(str);
bracketCheck(str,length);
return 0;
}