括号配对问题

来源:互联网 发布:ubuntu 删除文件 编辑:程序博客网 时间:2024/06/07 18:12

              括号配对问题

   1.基本思想

   栈的应用:


   算法思想


   1.顺序扫描字符串


   2.当栈为空的时候该字符入栈


   3.当该字符与栈顶字符匹配时退出栈顶,否则入栈


   4.当字符串扫描完时判断栈是否为空,栈为空就说明括号匹配,否则括号不匹配



 2.c语言代码实现



   #include<cstdio>


   //
cstdio是标准C++


   //
cstdio是将stdio.h的内容用C++头文件的形式表示出来


   //cstdio中的函数都是定义在一个名称空间std里面的


   //
如果要调用这个名字空间的函数 必须得加std::

    或者在文件中声明using namespace std


   #include<stack>


   //
C语言中引用栈的头文件格式


   #include<cstring>


   #include<iostream>


   using namespace std;


   int main()


  {


    char s[10001];


    int t;


    scanf("%d",&t);


    while(t--)


    {


        scanf("%s",s);


        int len=strlen(s);


        if(len%2!=0)


            printf("No\n");


        else


        {


            stack<char> q;    //
声明栈q


            for(int i=0; i<len; i++)


            {


                if(q.empty())


                    q.push(s[i]);  //
元素进栈


                else if(s[i]==']'&&q.top()=='[')


                {


                    q.pop();  //
栈顶元素出栈


                }


                else if(s[i]==')'&&q.top()=='(')


                {


                    q.pop();


                }


                else


                    q.push(s[i]);

            }


            if(q.empty())


                printf("Yes\n");


            else


                printf("No\n");

        }


    }


    return 0;


  }


原创粉丝点击