zoukankan      html  css  js  c++  java
  • 数据结构实验之栈与队列七:出栈序列判定

    数据结构实验之栈与队列七:出栈序列判定

    Description

    给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次。输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列。

    例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个出栈序列,但4,3,5,1,2就不可能是该序列的出栈序列。假设压入栈的所有数字均不相等。

    Input

     第一行输入整数n(1<=n<=10000),表示序列的长度。

    第二行输入n个整数,表示栈的压入顺序。

    第三行输入整数t(1<=t<=10)。

    后面依次输入t行,每行n个整数,表示要判断的每一个出栈序列。

    Output

     对应每个测试案例输出一行,如果由初始入栈序列可以得到该出栈序列,则输出yes,否则输出no。

    Sample

    Input 

    5
    1 2 3 4 5
    2
    4 5 3 2 1
    4 3 5 1 2

    Output 

    yes
    no
     1 #include<stdio.h>
     2 int main()
     3 {
     4     int i,j,top,n,t;
     5     int a[10005];
     6     int b[10005];
     7     int zhan[10005];
     8     scanf("%d",&n);
     9     for(i=0;i<n;i++)
    10     {
    11         scanf("%d",&a[i]);
    12     }
    13     scanf("%d",&t);
    14     while(t--)
    15     {
    16         for(j=0;j<n;j++)
    17         {
    18             scanf("%d",&b[j]);
    19         }
    20         i=0;
    21         j=0;
    22         top=-1;
    23         while(j<n)          //看按照b[]中的n個元素的序列是否都能出棧
    24         {
    25             if(a[i]==b[j])
    26             {                     //說明要出棧的b[i]中的元素與a[]中某元素相等,可以出棧,元素後移判斷下一個。
    27                 i++;
    28                 j++;
    29             }
    30             else if(top!=-1&&zhan[top]==b[j])   //如果棧不空,並且此時棧頂元素等於b[]中要出棧的元素
    31             {
    32                 j++;
    33                 top--;                //滿足條件,b[j]即可出棧,即j後移一位判斷下一個。同時棧頂元素下標減一。
    34             }
    35             else if(i<n)
    36             {
    37                 zhan[++top]=a[i];//將上一步a[i]!=b[j]的a[i]元素進棧
    38                 i++;
    39             }
    40             else
    41                 break;
    42         }
    43         if(top==-1)     //判斷棧內元素是否爲空
    44         {
    45             printf("yes
    ");
    46         }
    47         else
    48         {
    49             printf("no
    ");
    50         }
    51     }
    52     return 0;
    53 }
  • 相关阅读:
    使用牛顿迭代法和二分法求解一个数的平方根(python语言实现)
    厄拉多塞筛法和普通方法求素数表(python实现)
    使用辗转相除法求两个数的最大公因数(python实现)
    我在博客园第一篇博文
    Linux安装maven
    MyBatis基础入门
    Maven的使用入门
    nginx的简单使用和使用nginx在windows上搭建tomcat集群
    后端程序员如何玩转AJAX
    Servlet3.0文件上传
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12367051.html
Copyright © 2011-2022 走看看