主題連結: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
PS:
個人認為題意有點難了解!反正我是了解了好久!
代碼例如以下:
版權聲明:本文部落客原創文章,部落格,未經同意不得轉載。