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

    问题描述:

     写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是

    问题分析:

     思路应该是有的,先读入字符序列,当读到‘&’时,前面的一个入队列,后面的一个进栈,然后都用数组来保存,最后比较两数组的元素是否都相同,若相同,则是该模式。

    Int main()

    {

      Stack s;

      Queue q;

      Char buffer1[20]; 

      Char buffer2[20];

      Int i=0,count=0,j=0;

      Char temp=’’;

      Printf(请输入字符序列);

      While(temp!=@){

        Scanf(%c, &temp);

    Buffer1[i]=temp;

    I++;

    }

    While(buffer1[i]!=&){

    Push(q,buffer1[i]);

    I--;

    }

    If (buffer[i]==&)

    {

       Count++;

       I--;

       If(count==1)

       { 

         While(buffer1[i])

         {

          Push(s,buffer1[i]);

          I--;

         }

       }

       Else 

        {

           printf(这不是模式的字符序列);

           Return ;

        }

    }

    I=0;

    j=0;

    While(!stackempty(s)){

    Pop(s,buffer1[i]);

    I++;

    }

    While(!queueempty(q))

    {

     Pop(q,buffer2[j]);

     J++;

    }

    If(i==j)

    {

      While(buffer[i])

     {

          If(Strcmp(buffer[i],buffer[j])) 

          {

           I++;

           j++;

          }

          Else

          {

            Printf(这不是模式的字符序列);

            Return;

          }

          }//while

        }//if

        Else

    {

       Printf(这不是模式字符序列);

       Return;

    }

     }

    看得出我把问题弄复杂了,把复杂简单化,要理清思路。书上的算法:

    Bool Symmetry(char  a[])

    {

         Int i=0;

         Stack s;

         InitStack(s);

         ElemType x;

         While(a[i]!=&&&a[i])

         {

            Push(s, a[i]);

            I++;

         }

    If(a[i]) return false;

    I++;//跳过&这个字符

    While(a[i])

    {

      Pop(s,x);//先弹出来,然后立即判断

       If(x!=a[i]){

       DestoryStack(s);

       Return false;//表明已经不是模式字符串

       }

       I++;

    }

    Return true;

    }

     

  • 相关阅读:
    maven .assembly
    命令参数解析库JCommonder
    OWL,以及XML,RDF
    Ambari是什么?
    上海新桥>风景服务区>宁波江东区车管所 及返程路线
    武汉旅游地图(zz)
    武汉旅游(zz)
    上海市松江区 <> 上海市金山区枫泾·万枫东路ab6177,racehttp://live.racingchina.com/
    明中路明华路到第九人民医院路线
    月台路春申塘桥到虹桥火车站
  • 原文地址:https://www.cnblogs.com/wj204/p/3044336.html
Copyright © 2011-2022 走看看