【分析】④先匹配③再匹配以此类推,与栈的思想吻合
1.建立结构体
#include<stdio.h>
#define MaxSize 10
#define ElemType char
#define N 10
//顺序栈的基本方法代码实现(指针指向栈顶元素的情景)
typedef struct{
ElemType data[MaxSize];
int top;
}SqStack;
2.简单的栈的基本操作
//初始化栈
void InitStack(SqStack &s){
s.top = -1;
}
bool StackEmpty(SqStack &s){
if(s.top==-1)return true;
return false;
}
bool Push(SqStack &s,ElemType x){
if(s.top==MaxSize-1)return false;
s.data[++s.top] = x;
return true;
}
bool Pop(SqStack &s,ElemType &e){
if(s.top==-1)return false;
e = s.data[s.top--];
return true;
}
bool GetTop(SqStack &s,ElemType &x){
if(s.top==-1)return false;
x = s.data[s.top];
return true;
}
3.括号匹配
//括号匹配
bool KuoHaoCompare(SqStack &s,ElemType str[]){
for(int i = 0;i<N;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);
}
4.结果验证
int main(){
int x;
SqStack s;
InitStack(s);
char str[N];
gets(str);
puts(str);
printf("%d",KuoHaoCompare(s,str));
return 0;
}