zoukankan      html  css  js  c++  java
  • 在数据结构中用顺序栈解决括号匹配问题

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

    实现代码如下:    

    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

    }

                                                                                                                                            

  • 相关阅读:
    数组的复制
    ==与equals()区别
    构造器与方法
    数据类型及类型转换
    java标识符与命名规则
    多线程 总结
    局部变量与成员变量
    Java反射机制
    java的动态代理机制详解
    USB设备描述符
  • 原文地址:https://www.cnblogs.com/DennySmith/p/10153437.html
Copyright © 2011-2022 走看看