用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
解題思路:入隊的時候先把所有的資料都壓棧在stack1中,呼叫出隊的方法時,迴圈出棧把stack1中的資料依次壓棧到stack2中,此時的stack2的棧頂就是要出隊的資料,用t來儲存等下返回,最後再把stack2的資料又壓回stack1即可。
stack
stack1 =
newstack
(); stack
stack2 =
newstack
();public
void
push
(int node)
public
intpop()
int t = stack2.
pop();
//t要出隊的結果
while
(!stack2.
empty()
)return t;
}
解題思路:和一差不多,主要就是關鍵點那裡的if判斷解決的解法一出隊後還需壓棧回去的問題
stack
stack1 =
newstack
(); stack
stack2 =
newstack
();public
void
push
(int node)
public
intpop()
//關鍵點:這個if判斷解決了之前需要把資料再壓回棧1的問題。
//當棧2空了才需要從棧1出棧資料壓到棧2
if(stack2.
empty()
)}return stack2.
pop();
}
用兩個棧來實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。利用兩個棧都是後進先出的特性,可以實現負負得正的效果。即每次入棧都進入stack1,每次出棧先在stack2出棧,若stack2為空,則將stack1的元素全部出棧,按序入棧stack2,然後stack2出棧乙個元素即...
7 用兩個棧實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。兩個棧stack1 和stack2 入佇列 直接壓入stack1即可 出佇列 如果stack2不為空,把stack2中的棧頂元素直接彈出 否則,把stack1的所有元素全部彈出壓入stack2中,再彈出stack2的棧頂元素 include i...
用兩個棧實現佇列 用兩個佇列實現棧
劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...