#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
//定义栈
typedef struct{
int data[MaxSize]; //存放栈中元素
int top; //栈顶指针
}SqStack;
//初始化栈
void InitStack(SqStack &S){
S.top=-1; //初始化栈顶指针
}
//判断栈空
bool StackEmpty(SqStack S){
if(S.top=-1){
return true;
}else{
return false;
}
}
//入栈
bool Push(SqStack &S,char x){
if(S.top=MaxSize-1){ //判断栈是否已满
return false;
}
S.top+=1;
S.data[S.top]=x;
return true;
}
//出栈
bool Pop(SqStack &S,char &x){
if(S.top=-1){ //判断栈空
return false;
}
x=S.data[S.top];
S.top-=1;
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;
}else{
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(){
}