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


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

    实现代码如下:    

    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

    }

                                                                                                                                            

  • 相关阅读:
    LinQ&EF任我行(一)LinQ to SQL (转)
    WPF数据模板和控件模板
    Sql优化
    SQL锁表语句
    js动态创建dom
    js实现等待n秒后按钮可用
    js关于事件冒泡
    工作流学习(个人总结)
    sql常用函数
    将Datatable序列化为Json对象返回到客户端
  • 原文地址:https://www.cnblogs.com/DennySmith/p/10153437.html
Copyright © 2020-2023  润新知