[剑指offer]用两个栈实现队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

分析:其实画个图就很好理解了,压栈时直接压入stack1,弹栈的话就把stack1中d元素全部压入stack2,再把stack2的栈顶元素弹出,这个就是队列的队首元素了,再把剩下d压回stack1.

代码:

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

    int pop() {
        while(!stack1.empty()){
            stack2.push(stack1.top());
            stack1.pop();
        }
        int ret=stack2.top();
        stack2.pop();
        while(!stack2.empty()){
            stack1.push(stack2.top());
            stack2.pop();
        }
        return ret;
    }

private:
    stack stack1;
    stack stack2;
};

ps.今天写一点心情吧,晚上参加了百度实习生的笔试,说真的题目算是不难了,可是我做的非常差劲,也不知道是为什么,哎,希望忌骄忌躁,静下心把基础的书多看看。希望秋天校招不再这么囧。

你可能感兴趣的:(剑指0ffer)