用两个栈实现队列

来源:互联网 发布:bi开源框架 php 编辑:程序博客网 时间:2024/05/19 18:47

题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:栈的顺序是先进后出,队列的顺序是先进先出,所以push的操作就是正常的入栈操作,pop是先把stack1中的放到stack2中再出,即负负得正。
注意:在c++中,a=stack1.pop()这样是不对的,因为pop返回的是一个void,所以需要先取出stack1的栈顶元素a=stack1.top();再移除stack1.pop();

class Solution{public:    void push(int node) {        stack1.push(node);    }    int pop() {        int a=0;        if(!stack2.empty())//stack2不为空       {            a=stack2.top();             stack2.pop();       }        else        {            while(!stack1.empty())            {                a=stack1.top();                stack1.pop();                stack2.push(a);                              }            if(!stack2.empty())            {                a=stack2.top();                stack2.pop();                         }        }        return a;    }private:    stack<int> stack1;    stack<int> stack2;};
原创粉丝点击