堆疊 兩個棧模擬佇列

2021-08-22 13:42:57 字數 355 閱讀 1501

之前想的太複雜了,過分地考慮空間的利用率,使得邏輯非常複雜,簡直要**,看了標準答案後,媽的如此簡單!!

答案思路:準備兩個棧a,b。a專門用於入隊,b專門用於出隊。

當要入隊時,如果a沒有滿,那麼很正常地把元素壓入a。如果a已經滿了,如果b是空的,我們就把a的元素全部壓入b,這樣先入棧的元素跑到了b的頂端,而最後入a的到了b的棧底,剛好很適合出隊。但是如果b非空,則入隊失敗。因為b用於出隊的,把a的元素壓入b,會導致出隊混亂(後進的元素居然先出了)。

當要出隊時,b不滿的時候,就從b出。如果b空了,就檢視a的情況,如果a空,棧本來就是空的好嗎!如果a非空,因為此時b是空的,所以把a的棧倒入b中,此時先進入a的元素到了b的頂端,剛好可以進行出隊。

7 兩個棧模擬佇列,兩個佇列模擬棧

利用兩個棧模擬佇列 stack1,stack2 首先向stack1當中放入資料,如果需要輸出資料,從stack2中delete資料,如果stack2為空,就把stack1中資料匯入stack2 include static.h include include templateclass cquue ...

兩個佇列模擬堆疊結構

兩個佇列模擬乙個堆疊,佇列是先進先出,而堆疊是先進後出。模擬如下佇列 a 和 b 1 入棧 a 隊列為空,b 為空。例 則將 a,b,c,d,e 需要入棧的元素先放 a 中,a 進棧為 a,b,c,d,e 2 出棧 a 佇列目前的元素為 a,b,c,d,e 將 a 佇列依次加入 arraylist ...

兩個棧模擬佇列

演算法導論上的課後題 兩個棧模擬佇列 這個原來做過 一般是這樣 我看網上大概都是這種解法 原來棧空 a b null null 1,2,3入站的時候入a a b 3 null 2 null 1 null 出戰的時候先進b 然後pop b 在調過來進a a b null 1 null 2 null 3...