码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer-用两个栈实现队列

时间:2017-10-13 12:45:08      阅读:38      评论:0      收藏:0      [点我收藏+]

标签:一个栈   两个栈实现队列   code   倒序   ide   直接   操作   pre   display   

这题也很容易想到:一个栈出栈到另一个栈,然后另一个栈再出栈的顺序将是队列的顺序(原序列逆序的逆序是正序)

思路:两个栈,stack1,stack2; stack1负责存放元素,stack2负责暂时存放stack1的一次出栈,为了改变stack1里面元素的存放顺序

入栈操作:1.先将stack1依次出栈,依次存入stack2(这时stack2存放的是目标顺序的倒序)

     2.将新节点node压入stack2(新节点位于栈顶,最先出栈)

     3.将stack2的元素出栈,依次存入stack1(比较新的元素到了栈底,满足了后进后出,先进先出)stack1将是队列的顺序

弹出操作:stack1出栈的顺序就是队列的顺序了,直接stack1.pop()即可

比如要插入 1 2

技术分享

技术分享
class Solution
{
public:
    void push(int node) {
        while(!stack1.empty()){
            stack2.push(stack1.top());
            stack1.pop();
        }
        stack2.push(node);
        while(!stack2.empty()){
            stack1.push(stack2.top());
            stack2.pop();
        }
    }

    int pop() {
        int tmp = stack1.top();
        stack1.pop();
        return tmp;
    }

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

 

.

 

剑指offer-用两个栈实现队列

标签:一个栈   两个栈实现队列   code   倒序   ide   直接   操作   pre   display   

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!