劍指offer 用兩個棧實現佇列

2021-09-13 15:56:01 字數 1028 閱讀 8986

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

首先我們對棧和佇列的特點進行了解:

棧:先進後出

佇列:先進先出

因此要用兩個棧來實現佇列,我們可以用stack1來進行pushstack2進行pop

將stack2中頂部元素儲存然後pop

result = stack2.top();

stack2.pop();

但這裡要注意的問題是 stack1和stack2 的元素順序不能打亂

必須確保stack2的元素pop完畢,再將stack1 的元素 push到stack2 中。

舉例: 

stack1:6  5  4  3  2  1

stack2:  9  8  7

我們要的順序為   9  8  7  6  5  4  3  2  1

但如果我們先將stack1壓入  就會得到: 6  5  4  3  2  1  9  8  7

//棧2中沒有元素,且棧1中有元素,將棧1中的元素彈出後再壓入棧2,彈出棧2的頂部元素即為出隊

else if (!stack1.empty())

result = stack2.top();

stack2.pop();

} return result;

}private:

stackstack1;

stackstack2;

};

劍指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...