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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

3-08. 栈模拟队列(25)(ZJU_PAT 模拟)

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3-08. 栈模拟队列(25)(ZJU_PAT 模拟) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主題鏈接:http://pat.zju.edu.cn/contests/ds/3-08


設已知有兩個堆棧S1和S2,請用這兩個堆棧模擬出一個隊列Q。

所謂用堆棧模擬隊列,實際上就是通過調用堆棧的下列操作函數:

(1) int IsFull(Stack S):推斷堆棧S是否已滿,返回1或0;
(2) int IsEmpty (Stack S ):推斷堆棧S是否為空,返回1或0。
(3) void Push(Stack S, ElementType item ):將元素item壓入堆棧S;
(4) ElementType Pop(Stack S ):刪除并返回S的棧頂元素。

實現隊列的操作,即入隊void AddQ(ElementType item)和出隊ElementType DeleteQ()。

輸入格式說明:

輸入首先給出兩個正整數N1和N2,表示堆棧S1和S2的最大容量。隨后給出一系列的隊列操作:“A item”表示將item入列(這里如果item為整型數字);“D”表示出隊操作;“T”表示輸入結束。

輸出格式說明:

對輸入中的每一個“D”操作,輸出對應出隊的數字,或者錯誤信息“ERROR:Empty”。

假設入隊操作無法運行,也須要輸出“ERROR:Full”。每一個輸出占1行。

例子輸入與輸出:

序號 輸入 輸出
1 2 2 A 1 A 2 D D T 1 2
2 3 2 A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D T ERROR:Full 1 ERROR:Full 2 3 4 7 8 ERROR:Empty

PS:

個人認為題意有點難理解!反正我是理解了好久!


代碼例如以下:

#include <cstdio> #include <cstring> #include <iostream> #include <queue> #include <stack> using namespace std; stack<int>s1;//容量小的棧 stack<int>s2;//容量大的棧 int main() {int n1, n2;char c;while(~scanf("%d%d",&n1,&n2)){if(n1 > n2){int t = n1;n1 = n2;n2 = n1;}getchar();int tt;int flag = 0;for(int i = 0; ; i++){scanf("%c",&c);if(c == 'T')//結束輸入break;if(c == 'A'){scanf("%d",&tt);if(s1.size()==n1 && s2.size()!=0)//假設棧s1滿且棧s2不為空,則隊滿{printf("ERROR:Full\n");continue;}if(s1.size()!=n1)//假設棧s1沒有滿,直接壓入s1.push(tt);else{int len = s1.size();//假設棧s1滿。把棧s1的全部元素彈出壓入s2for(int i = 0; i < len; i++){int t = s1.top();s1.pop();s2.push(t);}s1.push(tt);//壓入s1}}else if(c == 'D'){if(s1.size()==0 && s2.size()==0){printf("ERROR:Empty\n");continue;}if(s2.size() == 0)//若棧s2空就將s1中的全部元素彈出到棧s2中,然后出棧{int len = s1.size();for(int i = 0; i < len; i++){int t = s1.top();s1.pop();s2.push(t);}}printf("%d\n",s2.top());s2.pop();}}}return 0; }

版權聲明:本文博主原創文章,博客,未經同意不得轉載。

轉載于:https://www.cnblogs.com/bhlsheji/p/4887299.html

總結

以上是生活随笔為你收集整理的3-08. 栈模拟队列(25)(ZJU_PAT 模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。

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