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

2021-10-02 16:15:42 字數 858 閱讀 5152

題目描述

用兩個棧來實現乙個佇列,完成佇列的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為入隊元素 ...