題目鏈結
小容量棧:輸入棧
大容量棧:輸出棧
輸入時
小棧大棧都空時,優先放入小棧
如果小棧滿了,且大棧為空,就倒如大棧中
如果小棧滿了,且大棧已經倒過一次了,說明真的滿了,即此佇列的最大容量為小棧容量的兩倍
輸出時
如果小棧大棧都有資料,優先輸出大棧的資料
如果大棧空,而小棧有資料,則把小棧中的數倒入大棧中,取出棧底的值後輸出,然後將剩餘的數又倒回小棧中。
小棧大棧都空時,輸出空錯誤
#include
#include
#include
#include
#include
using
namespace std;
//小容量st1為輸入棧
//大容量st2為輸出棧
intmain()
else
if(st1.
size()
== n1)
st1.
push
(x);
}else}}
else
printf
("%d\n"
, st2.
top())
; st2.
pop();
while
(st2.
size()
)}}else}}
return0;
}
7 22 堆疊模擬佇列 25分
沒注意看題,一開始把元素型別弄成char了,搞了好久都ac不了,換成int一次就ac了。題意 即用兩個棧來模擬佇列,使兩個棧協作實現佇列的功能。思路 1.第乙個棧為輸入棧,第二個棧為輸出棧,輸入棧比輸出棧要小。2.棧滿條件 輸入棧滿了而輸出棧不為空,說明棧滿了,因為輸出棧還有元素的話,輸入棧的元素是...
3 8 堆疊模擬佇列 25 分
設已知有兩個堆疊s1和s2,請用這兩個堆疊模擬出乙個佇列q。所謂用堆疊模擬佇列,實際上就是通過呼叫堆疊的下列操作函式 int isfull stack s 判斷堆疊s是否已滿,返回1或0 int isempty stack s 判斷堆疊s是否為空,返回1或0 void push stack s,el...
堆疊 兩個棧模擬佇列
之前想的太複雜了,過分地考慮空間的利用率,使得邏輯非常複雜,簡直要 看了標準答案後,媽的如此簡單!答案思路 準備兩個棧a,b。a專門用於入隊,b專門用於出隊。當要入隊時,如果a沒有滿,那麼很正常地把元素壓入a。如果a已經滿了,如果b是空的,我們就把a的元素全部壓入b,這樣先入棧的元素跑到了b的頂端,...