zoukankan      html  css  js  c++  java
  • 栈的运用(3)

    问题描述:

     试写一个判别表达式中开,闭括号是否配对出现的算法

    问题分析:

    这道题很简单,表达式存入数组中,判断,开,闭括号的个数相等,但是也要注意顺序,你不能出现这样的情况(【)】这个就不是正确的表达式了,也就是说两个匹配的操作符之间不能有其他的操作符。想到昨天做的简答题,把运算符入栈再去判断。

    Int main()

    {

      Stack s;

      initStack s;

     Char buffer[30];

      Int i;

      Char x,y;

      Scanf(%s,buffer);

      While(buffer[i])

      {

        If(buffer[i]==(||buffer[i]==[||buffer[i]==)||buffer[i]==])

         Push(s,buffer[i]);

         I++;

     }

     While(!stackempty(s))//怎样使栈后移,还是遇到坎了。所以这里的思路出现问题。。

    (是还没有很理解,出栈的算法和判断栈为空的算法把,理解了,就明白,怎样用了,现在了解了点)

    {

       Pop(s,x);

    if(x=()

     {

      Pop(s,y);

      If(y==))

      Printf(“”)

    }

     

    书上的算法:

    BOOL BracketCorrespondency(char  a[])

    {

      Int i=0;

      Stack s;

      InitStack(s);

      ElemType x;

      While(a[i]){

            Switch(a[i]){

            Case (:

             Push(s, a[i]);

             Break;

            Case [:

             Push(s, a[i]);

             Break;

            Case )

              GetTop(s, x);

              If(x==()  

                Pop(s,x);

              Else return false;

              Break;

            Case ]:

               GetTop(s,x);

                If(x==[)

                Pop(s,x);

                Else return false;

                Break;

            Default:

                Break;

           }

        I++;

    }

    If(s.size!=0)

       Return false;

    Return true;

    }

    这个算法很好地解决了这个运算符匹配的问题。

  • 相关阅读:
    H50062:meta 定义浏览器的渲染方式
    PHPJN0004:PHP文件上传被安全狗拦截处理
    APP0006- 提示弹窗
    MySQL0002:命令行操作数据库常用命令
    APP0005- data属性的定义
    CSS0018: 字体超长自动隐藏
    JS_0041:JS加载JS文件 异步同步加载js文件
    CSS0017: DIV 上下左右都居中样式
    CSS0016: 多个DIV并排均匀分布 box-sizing
    H50061:html 中引入外部 html 片段
  • 原文地址:https://www.cnblogs.com/wj204/p/3044349.html
Copyright © 2011-2022 走看看