1. 程式人生 > >資料結構實驗之棧七:出棧序列判定

資料結構實驗之棧七:出棧序列判定

yes
no
#include<stdio.h>
int main()
{
    int i,j,top,n,t;
    int a[10005]={-1};
    int b[10005]={-1};
    int c[10005]={-1};
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&t);
    while(t--)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&b[j]);
        }
        i=0;                
        j=0;
        top=-1;
        while(j<n)                 //a[]陣列的意思是等待要進入棧的全部元素
        {                          //b[]陣列的意思是出棧的元素序列
            if(a[i]==b[j])         //c[]陣列的意思是已經在棧中的元素       
            {                      //a[i]代表當前正要進棧的元素,如果a[i]==b[j]。      
                i++;               //說明此元素與序列當前首元素相同,說明此元素剛進棧就出棧      
                j++;               //如果a[i]!=b[j]說明此元素並沒有立即出棧,       
            }                      //則成為棧中元素,也就是c[]陣列中的元素,再次之前我們要判斷       
            else if(top!=-1&&c[top]==b[j])//下面這一步,也就是c[top]==b[j],                              
            {                //看看當上一步的元素因為a[i]==b[j]出棧之後,它在棧中的下一個的元素是否出棧               
                j++;          
                top--;//出棧      
            }
            else if(i<n)
            {
                c[++top]=a[i];//將上一步a[i]!=b[j]的a[i]元素進棧
                i++;
            }
            else
                break;
        }
        if(top==-1)     //判斷棧內元素是否為空
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
    }
    return 0;
}


相關推薦

資料結構實驗查詢線性雜湊表

Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式H(K

資料結構實驗排序選課名單 (SDUT 3404)

#include <stdio.h> #include <string.h> #include <stdlib.h> struct node { char data[15]; struct node *next; //存放名字 }; st

資料結構實驗查詢線性雜湊表 (SDUT 3379)

#include <stdio.h> #include <string.h> #include <stdlib.h> int a[3500]; int Hash[3500]; int main() { int n,p,t; while(~s

SDUT3379資料結構實驗查詢線性雜湊表

最後一個,線性探測hash表,跟上一個平方探測基本類似,觸類旁通型的。 詳情***看註釋*** #include <iostream> #include <cstring> #include <cstdio> using namespace std;

SDUT3404資料結構實驗排序選課名單

簡單的連結串列的插入應用,無騷操作可言 #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; t

資料結構實驗排序選課名單(裡面包含了新思想!!!!好神奇)

Attention: 如果struct node 裡的陣列開的太大,會導致MLE!!!   資料結構實驗之排序七:選課名單 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic

資料結構實驗排序選課名單

這道題的關鍵在於如何儲存這些選課同學的名字,應該將相同課的同學的名字存在一個數組中,定義結構體是可以用string類,也可以用字元指標,只不過在使用字元陣列時要注意字串只能用函式來操作,比如賦值時,用strcpy()。 程式碼如下: #include <bits/s

資料結構實驗序列判定

yes no #include<stdio.h> int main() { int i,j,top,n,t; int a[10005]={-1}; int b[10005]={-1}; int c[10005]={-1}; scanf("%d",&

資料結構實驗陣列三快速轉置(std::stable_sort函式)

資料結構實驗之陣列三:快速轉置 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description   轉置

資料結構實驗查詢四二分查詢__Find

Time Limit: 30 ms Memory Limit: 65536 KiB Problem Description 在一個給定的無重複元素的遞增序列裡,查詢與給定關鍵字相同的元素,若存在則輸出找到的位置,不存在輸出-1。 Input 一組輸入資料,輸入資料第一行首先輸入兩

SDUTOJ3311資料結構實驗串三KMP應用

資料結構實驗之串三:KMP應用 (PS:這題巨坑  嗚嗚嗚。。) https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2710/pid/3311 Time Limit:&nbs

資料結構實驗排序八快速排序

資料結構實驗之排序八:快速排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 給定N(N≤10^5)個

資料結構實驗查詢五平方雜湊表 (SDUT 3377)

Hash表的平方探測思路:如果當前這個沒存放數值,就放進去,如果當前這個地方Hash [ i ] 已經有數值了,就以平方的間隔左右尋找沒有存放數的空白 Hash [ i ]。  #include <bits/stdc++.h> using namespace std;

資料結構實驗查詢一二叉排序樹 (SDUT 3373)

二叉排序樹(Binary Sort Tree),又稱二叉查詢樹(Binary Search Tree),也稱二叉搜尋樹。 #include <stdio.h> #include <string.h> #include <stdlib.h> struct nod

資料結構實驗查詢六順序查詢(SDUT 3378)

 (不知道為啥開個陣列就 TLE 。QAQ) #include <stdio.h> #include <stdlib.h> #include <string.h> //const int maxn = 100005; // //int a[ma

資料結構實驗排序二交換排序__快排、冒泡、選擇

Problem Description 氣泡排序和快速排序都是基於"交換"進行的排序方法,你的任務是對題目給定的N個(長整型範圍內的)整數從小到大排序,輸出用冒泡和快排對這N個數排序分別需要進行的資料交換次數。 Input 連續多組輸入資料,每組資料第一行給出正整數N(N ≤ 10^

資料結構實驗排序一一趟快排__Sort

Problem Description 給定N個長整型範圍內的整數,要求輸出以給定資料中第一個數為樞軸進行一趟快速排序之後的結果。 Input 連續輸入多組資料,每組輸入資料第一行給出正整數N(N < = 10^5),隨後給出N個長整型範圍內的整數,數字間以空格分隔。 Ou

資料結構實驗串一KMP簡單應用

Problem Description 給定兩個字串string1和string2,判斷string2是否為string1的子串。 Input  輸入包含多組資料,每組測試資料包含兩行,第一行代表string1(長度小於1000000),第二行代表string2(長度小

資料結構實驗陣列一矩陣轉置

陣列——矩陣的轉置 給定一個m*n的矩陣(m,n<=100),求該矩陣的轉置矩陣並輸出。 Input  輸入包含多組測試資料,每組測試資料格式如下: 第一行包含兩個數m,n 以下m行,每行n個數,分別代表矩陣內的元素。 (保證矩陣內的數字在int範圍之內)

資料結構實驗串三KMP應用

Problem Description 有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一的確定一對值l和r(l <= r),使得這m個數剛好是第l個小朋友到第r個小朋友手裡的糖塊數? Input 首先輸入一