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

2021-07-22 19:00:45 字數 722 閱讀 7222

題目描述:用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

解題思路:將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊

(1)使用stack容器定義兩個棧

stack

stack1;

stack

stack2;

(2)入隊

stack1.push(node); //node為入隊元素
(3)出隊

首先考慮特殊情況,兩個棧皆為空,表示無元素可以出隊。

stack2為空,應該將stack1的元素全部壓入stack2中;如果不為空,則直接出棧stack2的頂元素即可

if(stack2.empty())

while(!stack1.empty())

node=stack2.top();

stack2.pop();

舉例:

push(1)、push(2)、push(3)、pop()、pop()、push(4)、pop()、push(5)、pop()、pop()

結果為:

while(!stack1.empty())

stack1.empty返回變數為bool 變數,不能寫作stack1.empty!=0

劍指offer 用兩個棧實現佇列

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

劍指offer 用兩個棧實現佇列

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

劍指offer 用兩個棧實現佇列

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。思路 首先搞清楚棧和佇列的區別,主要是出操作,出棧的時候元素 先進後出 出佇列的時候元素 先進先出 順序正好相反。所以考慮有兩個棧,棧a用來讀取資料,當需要模擬佇列的出操作時,將棧a裡的資料取出放到棧b,再從...