日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构实验之栈与队列七:出栈序列判定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

思路:
首先建立一個棧,將輸入的數據保存在數組中,一個一個的進棧,然后每一個進棧的時候都與目標序列元素相比較,當二者相等的時候,出棧,然后繼續獲取棧頂元素余下一個序列元素相比較,相等就接著比較下一個,如果不相等就繼續入棧操作,當入棧操作結束后。判斷

#include<bits/stdc++.h>using namespace std;#define intsize 10010 #define addsize 10010typedef int elemtype;typedef struct {elemtype *base;elemtype *top;int stacksize; } Sqstack;int initstack(Sqstack &s) {s.base = (elemtype *)malloc(intsize *sizeof(elemtype));if(!s.base)return -1;s.top = s.base;s.stacksize = intsize;return 0; } int push(Sqstack &s, elemtype x) {if(s.top - s.base > s.stacksize){s.base = new elemtype[intsize + addsize];if(!s.base)return -1;s.top = s.base + addsize;}*s.top++ = x;return 0; }elemtype top(Sqstack &s) {return *(s.top - 1); }elemtype pop(Sqstack &s) {return *--s.top; }int emptystack(Sqstack &s) {if(s.base == s.top)return 1;elsereturn 0; } int main() {Sqstack s;int n, i, t, k;int b[10010], a[10010];memset(a, 0, sizeof(a));scanf("%d", &n);for(i = 0; i < n; i++){scanf("%d", &a[i]);}scanf("%d", &t);while(t--){k = 0;initstack(s);memset(b, 0, sizeof(b));for(i = 0; i < n; i++)scanf("%d", &b[i]);for(i = 0; i < n; i++){push(s, a[i]);while(top(s) == b[k] && emptystack(s) != 1){pop(s);k++;}}if(emptystack(s) == 1)printf("yes\n");elseprintf("no\n");}return 0; }

總結

以上是生活随笔為你收集整理的数据结构实验之栈与队列七:出栈序列判定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。