題目描述
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
思路:棧是先進後出
要實現的是在隊尾插入節點
在隊首刪除節點
首先呢,可以拿乙個例子來看,首先通過乙個例子來分析,比如插入乙個元素a,可以先將它插入到棧1之中。棧1中目前的元素為,棧2為空。
再壓入兩個元素b,c。同上。此時棧1的元素為。棧2為空。
現在要刪除啦。想要刪除的元素為隊首元素。此時需要把a,b,c放在棧2中,然後刪除棧2的棧頂就完成了刪除隊首的操作啦。
此時棧1為空,棧2為,b在棧頂
如果想要再次刪除的話,剩下的為b,c,需要刪除的為b。b在棧頂,直接刪除。
此時棧2為,棧1為空。
總結可知:
刪除乙個元素,如果棧2不為空,直接彈出棧2的棧頂。
棧2為空的時候,把棧1的元素依次取出放到棧2中,再刪除,即彈出棧頂,如果棧1也為空,則隊列為空,無法進行刪除操作
新增乙個元素,若棧2為空,直接新增到棧1之中即可。
如果棧2有元素,則依次取出再放回棧1,再新增元素即可。
class
solution
stack1.
push
(node);}
intpop()
int t=stack2.
top();
stack2.
pop();
return t;
}private
: stack<
int>
stack1;
stack<
int>
stack2;
};
劍指Offer(五) 用兩個棧實現佇列
這個系列是我在牛客網上刷 劍指offer 的刷題筆記,旨在提公升下自己的演算法能力。檢視完整的劍指offer演算法題解析 劍指offer完整習題解析 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。佇列是先進先出,棧是先進後出,如何用兩個棧來實現這種先進先出呢?其實...
劍指offer 用兩個棧實現佇列
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...
用兩個棧實現佇列《劍指offer
題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊 1 使用stack容器定義兩個棧 stack stack1 stack stack2 2 入隊 stack1.push node node為入隊元素 ...