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;

    }

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

  • 相关阅读:
    中高级PHP程序员应该掌握哪些技术
    如何在FOXMAIL添加网易邮箱
    subline text 3快捷键
    【sublime】sublime Text 3 javaScript代码自动提示插件&安装步骤 &启动Debug模式
    PHPStorm常用快捷键
    怎么样快速修改HOSTS文件?让火绒等小工具来帮忙
    windows系统 右键新建菜单添加新建php文件
    给初学编程的人的干货
    安装Adobe Dreamweaver CC时出现安装失败及解决方法
    win10系统每次打开软件都会弹出账户控制如何解决
  • 原文地址:https://www.cnblogs.com/wj204/p/3044349.html
Copyright © 2011-2022 走看看