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;

    }

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

  • 相关阅读:
    代码签名证书原理和作用
    安装SSL证书有什么作用?
    有关如何修复Android手机上的SSL连接错误的快速指南
    可信时间戳如何生成?时间戳基本工作原理
    全球通用的数字证书产品选购指南
    国密SSL证书申请免费试用
    国密SSL证书免费试用申请指南
    哈希算法的原理和用途详解
    https证书安装无效的主要原因
    Anatomy of a Database System学习笔记
  • 原文地址:https://www.cnblogs.com/wj204/p/3044349.html
Copyright © 2011-2022 走看看