• 题目:两个单向队列构成一个栈


    题目:两个单向队列构成一个栈

    //两个队列构成一个栈
    //StackWithTwoQueues
    #include<queue>   //STL
    #include<iostream>
    
    using namespace std;
    
    template<class T>
    class BStack
    {
        public:
            BStack();
            ~BStack();
    
            void InStack(const T& elem);
            T OutStack();
        private:
            queue<T> q1;
            queue<T> q2;
    };
    
    //思路:一个队列空,另一个队列则‘入栈’操作;
    //      在删除‘栈顶’时,先对非空队列前n-1个元素出队、入队到另一队列,
    //      最后元素为待删‘栈顶’
    
    template<class T>
    BStack<T>::BStack()
    {
    }
    
    template<class T>
    BStack<T>::~BStack()
    {
    }
    
    template<class T>
    void BStack<T>::InStack(const T& elem)
    {
        if(!q2.empty())
            q2.push(elem);
        else
            q1.push(elem);
    }
    
    
    template<class T>
    T BStack<T>::OutStack()
    {
        T data;
        T top;
        if(!q1.empty())
        {
            while(q1.size() > 1)
            {
                data = q1.front();
                q1.pop();
                q2.push(data);
            }
            top = q1.front();
            q1.pop();
        }
        else if(!q2.empty())
        {
            while(q2.size() > 1)
            {
                data = q2.front();
                q2.pop();
                q1.push(data);
            }
            top = q2.front();
            q2.pop();
        }
        else
        {
            cerr<<"Stack is empty!"<<endl;
            exit(1);
        }
    
        return top;
    }

     与作者提供思路一致!

    清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己 -- 共勉
  • 相关阅读:
    DOM的认识以及一些节点的应用
    HTML5简介、视频
    PS切图保存后的背景图为透明
    计时器中qq上的一个功能,延时作用
    javascript定时器(上)
    javascript二级联动
    ps切片
    javascript数据类型、初始化
    Windows8 App Store 开发者会关心的文档
    win8 app code中设置Resources里定义好的Style
  • 原文地址:https://www.cnblogs.com/hello-yz/p/3245527.html
Copyright © 2020-2023  润新知