栈在括号匹配中的应用

一. 算法思想

二. 代码实现

eg:                 [   (   [   ]   [   ]   )   ]

1.栈的括号匹配算法

int MatchBracket()//栈的括号匹配算法
 {
     Stack S=InitStack();
    ElemType ch;
     char arr[8]={'[','(','[',']','[',']',')',']'};
     for(int i=0;i<8;i++)
     {
         if(arr[i]=='['||arr[i]=='(')
         {
             PushStack(&S,arr[i]);
         }
        else if(arr[i]==']')
        {
            if(GetTop(S)=='[')
            {
                PopStack(&S,&ch);    
            }
             else
             {
                 printf("括号不匹配!
");
                 return FALSE;
             }    
        }
        else if(arr[i]==')')
        {
             if(GetTop(S)=='(')
            {
                PopStack(&S,&ch);    
            }
             else
             {
                 printf("括号不匹配!
");
                 return FALSE;
             }    
        } 
     }
     if(StackEmpty(S))
     {
         printf("括号匹配!
");
     }
     else
     {
         printf("括号不匹配!
");
     }
     return TRUE;
 }

运行示例:

int main()
{
    if(MatchBracket())
    {
        printf("算法正常结束!
");
    }
    else
    {
        printf("算法异常结束!
");
    }

    return 0;
 } 

原文地址:https://www.cnblogs.com/hky8220/p/13218494.html