1. 程式人生 > >刷題筆記5——用兩個棧來實現一個佇列

刷題筆記5——用兩個棧來實現一個佇列

題目描述

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

解析

棧是後進先出,佇列是先進先出,由於題目給定了兩個棧,所以思路大致是這樣

① 在入隊push時,直接將元素放到其中一個棧A中

② 在出隊pop時,將棧A中的元素逐個彈出並放到棧B中
在這裡插入圖片描述

一直到將棧A中的元素全部彈出,即完成了棧A元素向棧B的轉移
然後,將棧B的棧頂元素給result,然後呼叫棧的pop方法將其彈出即可

程式碼

class Solution
{
public:
    void push(int node) {
        stack1.
push(node); } int pop() { int res; if(stack2.empty()) { while(!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } } res = stack2.top(); stack2.pop(); return res; } private:
stack<int> stack1; stack<int> stack2; };