題目描述:用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
首先我們對棧和佇列的特點進行了解:
棧:先進後出
佇列:先進先出
因此要用兩個棧來實現佇列,我們可以用stack1來進行push,stack2進行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...