劍指Offer 用兩個棧實現佇列

2021-09-27 04:26:24 字數 606 閱讀 4571

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

push操作可以直接把元素存進其中乙個棧,我這裡是存在stack1棧中。

pop操作需要結合兩個棧。當把元素依次入棧放進棧a,再把棧a的元素依次出棧放進棧b,那麼,棧b出棧的順序就相當於把元素存進佇列後的出隊順序。

當第一次pop時,stack2為空,則把stack1的所有元素放進stack2中,再出棧乙個元素就行。當stack2有元素時,push操作還是把元素存進stack1棧中,並不會受到影響。當stack1和stack2都有元素時,pop操作只會出棧stack2的元素,直到stack2為空才會再次把stack1的元素放進stack2中。

class

solution

intpop()

}int pop_val = stack2.

top();

stack2.

pop();

return pop_val;

}private

: stack<

int> stack1;

stack<

int> stack2;

};

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