zoukankan      html  css  js  c++  java
  • 两个栈实现队列的功能

    //用两个栈实现队列的功能
    //假设有两个栈s1与s2,则s1保存刚刚入队的元素,若需出队且s2为空,则将s1所有元素压入s2(此时s2中元素顺序为元素入队顺序),然后取出s2栈顶即可,若s2非空(此时s2中元素为s1之前压入,其栈顶就是最早入队的元素),则直接取出s2的栈顶。
    template<class T> class MyQueue
    {
        stack<T> s1,s2;
    public:
        MyQueue(){}
        int size()
        {
            return s1.size()+s2.size();
        }
        bool empty()
        {
            if(size()==0)return true;
            else return false;
        }
        void push(T value)
        {
            s1.push(value);
        }
        T front()
        {
            if(!s2.empty())
            {
                return s2.top();
            }
            else
            {
                while(!s1.empty())
                {
                    s2.push(s1.top());
                    s1.pop();
                }
                return s2.top();
            }
        }
        void pop()
        {
            if(!s2.empty())
            {
                s2.pop();
            }
            else
            {
                while(!s1.empty())
                {
                    s2.push(s1.top());
                    s1.pop();
                }
                s2.pop();
            }
        }
    };
  • 相关阅读:
    css3转换
    JavaScript函数
    JavaScript数组
    JavaScript流程控制
    JavaScript数据类型、运算
    css3响应布局
    css3渐变、背景、过渡、分页
    css3初识
    CSS3选择器
    H5拖拽、绘画、web存储
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4396930.html
Copyright © 2011-2022 走看看