《劍指offer》---8.用兩個棧實現隊列

題目描述

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

答題框架

class Solution
{
public:
    void push(int node) {
        
    }

    int pop() {
        
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};

解題分析

棧是先進後出原則
隊列是先進先出原則
用一個棧來存放push進來的數據
另一個棧在pop時對其進行倒換

代碼

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        int len=stack1.size();
        while(stack2.empty()!=1)
            stack2.pop();
        for(int i=1;i<=len;i++)
            stack2.push(stack1.top()),stack1.pop();
        int ans=stack2.top();
        stack2.pop();
        for(int i=1;i<len;i++)
            stack1.push(stack2.top()),stack2.pop();
        return ans;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章