劍指offer 用兩個棧實現佇列

2021-10-02 17:09:56 字數 746 閱讀 8323

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

佇列  棧

棧的性質為先進後出,隊列為先進先出。

模擬出佇列。

stack1 = , stack2 =

首先根據佇列的先進先出規則,應該先彈出stack1中的第乙個元素,需要將stack1中的所有元素push到stack2中。

stack1 = , stack2 =

此時將stack2中的頂元素pop,返回a。其次將stack2中的元素b按順序pop,返回b。

stack1 = , stack2 =

此時若要push乙個元素d,則直接push到stack1中即可。

stack1 = , stack2 =

若需要繼續pop,則直接彈出stack2中的元素直到stack2為空。

通過上述可以得出,在佇列push時,直接將元素push到stack1中即可。在佇列pop時,當stack2為空且stack1不為空時,將stack1中的元素按順序push到stack2中並彈出,此時佇列pop的元素返回值為stack2的頂元素。

class solution

int pop()

}a = stack2.top();

stack2.pop();

return a;

}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...