解决在类似()()(())()(())()的匹配问题
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef char ElemType;
/*栈在括号匹配中的应用
eg:[ ( [ ] [ ] ) ]
*/
int match(char exp[],int n){
char stack[MaxSize];
int top=-1;//声明和初始化
int i;
for(i=0;i<n;i++){
if(exp[i]=='(')//若遇到(,则入栈等待以后的处理
stack[++top]='(';
if(exp[i]=='[')//若遇到[,则入栈等待以后的处理
stack[++top]='[';
if(exp[i]==')'){//若遇到),则出栈
if(top==-1)
return 0;
else
--top;
}
if(exp[i]==']'){//若遇到],则出栈
if(top==-1)
return 0;
else
--top;
}
}
if(top==-1)
return 1;//栈空,即所有的括号呗处理掉,
else
return 0;//否则不匹配
}
int main(){
ElemType a[9]={'(','(',')',')','[','(',')',']','('};
ElemType temp;
int n=sizeof(a)/sizeof(a[0]);
int result=match(a,n);
if(result==1)
printf("匹配成功");
if(result==0)
printf("匹配失败");
return 0;
}