对于给定的一个表达式,其中一定会用到大量的左右括号,有小括号,中括号,甚至大括号。如何才能判断其中的括号是否是一一对应的。所以可以用数据结构中的顺序栈来解决这个问题 。在此我就以小括号的匹配为例来说明。在匹配检查时,我们建立一个空的顺序栈。我们从左到右依次的进行检查,当遇到的是左括号'('时,就让其进栈。当遇到')'时在将其出栈并且左右括号都划掉。一直到检查完。如果栈中是空的,则左右括号匹配 反之不匹配。
实现代码如下:
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]==')')
{
if(top==-1)
return 0;//如果遇到')’,而且栈是空的,则不匹配
else
--top;//栈非空 ,出栈 top-1
}
}
if(top==-1)
return 1;//如果栈空 则括号匹配 返回1
else
return 0;//括号不配 返回0
}