用两个栈实现一个队列

来源:互联网 发布:seo搜索推广 编辑:程序博客网 时间:2024/05/23 23:26

题目

使用两个栈模拟实现一个队列的功能。

思路

栈是“先进后出(FILO)”,队列是“先进先出(FIFO)”。栈的操作见:http://blog.csdn.net/u010902721/article/details/45748547
其中一个栈stack1固定用为push使用,另一个栈stack2固定用作pop使用。当stack2为空的时候,就将stack1中的元素逐个出栈,直接push到stack2中。这样就可以执行pop操作了。

代码

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

测试

测试的时候主要测元素从stack1向stack2转移的代码。push和pop操作交替执行,查看相应结果。经测试,上述代码没什么问题。

0 0