{
if(s.top+1 == Maxsize){
return true;
}
return false;
}
bool Isempty(Stack &s){
if(s.top == -1){
return true;
}
return false;
}
void InitStack(Stack &s){
s.top = -1;
}
bool PushStack(Stack &s,char data){
if(IsFull(s)){
return false;
}
s.data[++s.top] = data;
return true;
}
bool PopStack(Stack &s,char &x){
if (Isempty(s))
{
return false;
}
x = s.data[s.top--];
return true;
}
bool GetTop(Stack &s,char &x){
if(Isempty(s)){
return false;
}
x = s.data[s.top];
return true;
}
int length(char str[]){
int length = 0;
int i = 0;
while(str[i] != '\0'){
i++;
length++;
}
return length;
}
/*
name : ParenMatch()
role : 括号是否匹配,正确返回true,else 返回false
*/
bool ParenMatch(Stack &s,char str[]){
int len = length(str);
for(int i =0;i<len;i++){
if(str[i] == '(' || str[i] == '['|| str[i] == '{'){ //左括号,入栈
PushStack(s,str[i]);
}else{ //扫描到右括号
if(Isempty(s)){ //为空,匹配失败
return false;
}
char elem;
PopStack(s,elem);
if(str[i] == ')' && elem != '(' ){
return false;
}
if(str[i] == ']' && elem != '[' ){
return false;
}
if(str[i] == '}' && elem != '{' ){
return false;
}
}
}
// if(Isempty(s)){
// return true;
// }else{
// return false;
// }
return Isempty(s); //与上边if else表达的一样
}
int main(){
Stack s;
InitStack(s);
char str[10] = {'(','(','{','}',')',')','(',')'};
// int len = length(str);
// printf("%d",len);
if(ParenMatch(s,str)){
printf("true");
}else{
printf("false");
}
}