7 22 堆疊模擬佇列 25 分

2021-09-29 17:05:12 字數 790 閱讀 6975

題目鏈結

小容量棧:輸入棧

大容量棧:輸出棧

輸入時

小棧大棧都空時,優先放入小棧

如果小棧滿了,且大棧為空,就倒如大棧中

如果小棧滿了,且大棧已經倒過一次了,說明真的滿了,即此佇列的最大容量為小棧容量的兩倍

輸出時

如果小棧大棧都有資料,優先輸出大棧的資料

如果大棧空,而小棧有資料,則把小棧中的數倒入大棧中,取出棧底的值後輸出,然後將剩餘的數又倒回小棧中。

小棧大棧都空時,輸出空錯誤

#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的頂端,...