美文网首页
双栈模拟队列

双栈模拟队列

作者: 熊白白 | 来源:发表于2017-07-08 20:05 被阅读70次

    编写一个类,只能用两个栈结构实现队列,支持队列的基本操作(push,pop)。
    其实动手写一下,也很容易知道这个过程:

    • 一个栈inS用于压入数据,另一个栈outS用于弹出数据
    • 压入时直接压入
    • 弹出时若栈不为空,则弹出;否则将inS中所有的值挨个弹出并压入outS中。然后从outS弹出元素。
    class TwoStack {
    public:
        stack<int> inS,outS;
        void push(int n){
            inS.push(n);
        }
        
        int pop(){
            if(outS.empty()){
                while(!inS.empty()){
                    int t=inS.top();
                    inS.pop();
                    outS.push(t);
                }
            }
            int t=outS.top();
            outS.pop();
            return t;
        }
    }
    

    扩展:用两个队列模拟栈。
    其实用一个队列就可以做到。那么:

    • 压入时:压入到队列尾
    • 弹出时:依次从队列头弹出元素,然后压入对尾。直至弹出原来处于队尾的元素。

    相关文章

      网友评论

          本文标题:双栈模拟队列

          本文链接:https://www.haomeiwen.com/subject/xqejhxtx.html