栈在括号匹配中的应用

Posted hky8220

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈在括号匹配中的应用相关的知识,希望对你有一定的参考价值。

一. 算法思想

技术图片

 

 

 

 

二. 代码实现

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;
 } 

 

技术图片

 

以上是关于栈在括号匹配中的应用的主要内容,如果未能解决你的问题,请参考以下文章

栈在括号匹配中的应用

王道3.3 栈的应用

用栈检测括号匹配

Java 栈 如何实现括号匹配

王道3.3 栈的应用以及队列的应用

用栈实现括号匹配的检验