您的位置:首页 > Web前端

剑指offer 两个栈实现队列

2015-08-19 10:24 477 查看
题目描述:

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

代码实现:

[code]#include <iostream>
#include <stack>

using namespace std;

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

    int pop() {

        /* 把栈1的数据压入栈2 */
        while(!stack1.empty())
        {
            stack2.push(stack1.top());
            stack1.pop();
        }

        /* 得到栈2栈顶的元素 */
        int data = stack2.top();
        stack2.pop();

        /* 把数据压入栈1 */
        while(!stack2.empty())
        {
            stack1.push(stack2.top());
            stack2.pop();
        }
        return data;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};
int main()
{
    Solution s;
    s.push(1);
    s.push(2);
    s.push(3);

    cout << s.pop() << endl;
    cout << s.pop() << endl;

    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: