zoukankan      html  css  js  c++  java
  • 013实现使用两个堆栈队列(keep it up)

    实现使用两个堆栈队列
    FIFO队列是一种数据结构(FIFO),后堆叠前进出的数据结构的(FILO)。 
    两个栈实现的最简单的方法就是排队:队列中的第一个推栈, 
    队列将数据顺序的第一个堆栈推入第二堆叠,然后叠加.
    两个规则:
    1)进队列,则直接压入第一个栈
    2)出队列,若果第二个栈不为空。直接pop(),如过第二个栈为空,

    则把第一个栈中的数据所有压入第二个栈(第一个栈此时为空)。

    实际写代码时注意栈为空的情况。

    代码:

    #include <iostream>
    #include <stack>
    
    class Queue
    {
    public:
    	Queue() {}
    	~Queue() {}
    
    	void push(int vData)
    	{
    		m_First.push(vData);
    	}
    
    	void pop()
    	{
    		if (m_Second.empty())
    		{
    			if (m_First.empty())
    			{
    				std::cout << "the queue is empty" << std::endl;
    				return ;
    			}
    			move(m_First, m_Second);
    			m_Second.pop();
    		}
    	}
    
    	int top()
    	{
    		if (m_Second.empty())
    		{
    			if (m_First.empty())
    			{
    				std::cout << "the queue is empty" << std::endl;
    				return ;
    			}
    			move(m_First, m_Second);
    		}
    		return m_Second.top();
    	}
    
    	int back()
    	{
    		if (m_First.empty())
    		{
    			if (m_Second.empty())
    			{
    				std::cout << "the queue is empty" << std::endl;
    				return ;
    			}
    			move(m_Second, m_First);
    		}
    		return m_First.top();
    	}
    
    private:
    	void move(std::stack<int>& vL, std::stack<int>& vR)
    	{
    		while (!vL.empty())
    		{
    			vR.push(vL.top());
    			vL.pop();
    		}
    	}
    
    private:
    	std::stack<int> m_First;
    	std::stack<int> m_Second;
    };
    


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    TF利用分布式队列控制线程
    非随机的抽样
    代码杂谈-split函数
    beta函数与置信度估计
    tensorflow模型
    SQL的技巧
    tensorflow输入数据处理
    flink学习
    Python
    通过淘宝IP地址库获取IP位置
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4725480.html
Copyright © 2011-2022 走看看