在数据结构中用顺序栈解决括号匹配问题

对于给定的一个表达式,其中一定会用到大量的左右括号,有小括号,中括号,甚至大括号。如何才能判断其中的括号是否是一一对应的。所以可以用数据结构中的顺序栈来解决这个问题 。在此我就以小括号的匹配为例来说明。在匹配检查时,我们建立一个空的顺序栈。我们从左到右依次的进行检查,当遇到的是左括号'('时,就让其进栈。当遇到')'时在将其出栈并且左右括号都划掉。一直到检查完。如果栈中是空的,则左右括号匹配 反之不匹配。

实现代码如下:    

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

}

                                                                                                                                        

原文地址:https://www.cnblogs.com/DennySmith/p/10153437.html