码迷,mamicode.com
首页 > 其他好文 > 详细

两个栈实现队列的功能

时间:2015-04-06 23:06:56      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

//用两个栈实现队列的功能
//假设有两个栈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();
        }
    }
};

 

两个栈实现队列的功能

标签:

原文地址:http://www.cnblogs.com/Vae98Scilence/p/4396930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!