劍指offer 用兩個棧實現佇列

2022-08-14 18:54:09 字數 749 閱讀 9340

思路:

棧——lifo(後進先出);佇列——fifo(先進先出)。

用兩個棧實現佇列的根本點是要保證最先進來的(最老的)元素出棧時處於棧頂位置。

使用棧1來入棧,棧2來出棧。具體流程如下:

1.入棧操作:用棧1入棧,直接push到棧1頂部;(元素全部在棧1,棧2為空)

2.出棧操作:先將棧1中的元素依次拿出,入棧到棧2中。完成後,原來最先進入棧1的(最老的)元素會在棧2的棧頂,最後進入棧1(最新的)元素會在棧底。

此時,執行棧2的pop,將最老的元素出棧。出棧操作完成。此時,還需要把棧2的元素依次再拿出,push回棧1。

1

class

solution28

//出棧

9int

pop()

17//

將棧2的棧頂出棧

18 top=stack2.top();

19stack2.pop();

20//

將棧2中剩下的內容再放回棧1中

21while(!stack2.empty())

2226

return

top;27}

28private

:29 stackstack1;

30 stackstack2;

31 };

劍指offer 用兩個棧實現佇列

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...

用兩個棧實現佇列《劍指offer

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊 1 使用stack容器定義兩個棧 stack stack1 stack stack2 2 入隊 stack1.push node node為入隊元素 ...

劍指offer 用兩個棧實現佇列

記錄 劍指offer 上的演算法題。題目描述如下 佇列的宣告如下 template class cqueue cqueue t deletehead bool empty private stack stack1 stack stack2 實現的 如下 templatet stack1.push n...