1. 程式人生 > >在資料結構中用順序棧解決括號匹配問題

在資料結構中用順序棧解決括號匹配問題

對於給定的一個表示式,其中一定會用到大量的左右括號,有小括號,中括號,甚至大括號。如何才能判斷其中的括號是否是一一對應的。所以可以用資料結構中的順序棧來解決這個問題 。在此我就以小括號的匹配為例來說明。在匹配檢查時,我們建立一個空的順序棧。我們從左到右依次的進行檢查,當遇到的是左括號'('時,就讓其進棧。當遇到')'時在將其出棧並且左右括號都劃掉。一直到檢查完。如果棧中是空的,則左右括號匹配 反之不匹配。

實現程式碼如下:    

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

}