zoukankan      html  css  js  c++  java
  • leetCode(44):Implement Stack using Queues 分类: leetCode 2015-07-19 19:29 50人阅读 评论(0) 收藏

    Implement the following operations of a stack using queues.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • empty() -- Return whether the stack is empty.
    Notes:
    • You must use only standard operations of a queue -- which means only push to backpeek/pop from frontsize, and is empty operations are valid.
    • Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
    • You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

    两个队列,永远有一个为空,插入时,插入到不为空的队列中,如果都为空则任意;弹出时,把不为空队列中的所有元素(最后一个除外)转移到另一队列当中,并将最后一个不插入,直接删除即可。如果两个队列均为空,则说明栈为空。


    class Stack {
    public:
        // Push element x onto stack.
        void push(int x) {//在非空队列中插入
            if (aqueue.empty())
    			bqueue.push(x);
    		else
    			aqueue.push(x);
        }
    
        // Removes the element on top of the stack.
        void pop() {
            if (aqueue.empty())
    		{//转移
    			while (bqueue.size() != 1)
    			{
    				int tmp = bqueue.front();
    				aqueue.push(tmp);
    				bqueue.pop();
    			}
    			bqueue.pop();
    		}
    		else
    		{
    			while (aqueue.size() != 1)
    			{
    				int tmp = aqueue.front();
    				bqueue.push(tmp);
    				aqueue.pop();
    			}
    			aqueue.pop();
    		}
        }
    
        // Get the top element.
        int top() {
            int tmp;
    		if (aqueue.empty())
    		{			
    			while (!bqueue.empty())
    			{
    				tmp= bqueue.front();
    				aqueue.push(tmp);
    				bqueue.pop();
    			}
    		}
    		else
    		{
    			while (!aqueue.empty())
    			{
    				tmp = aqueue.front();
    				bqueue.push(tmp);
    				aqueue.pop();
    			}
    		}
    		return tmp;
        }
    
        // Return whether the stack is empty.
        bool empty() {
            return (aqueue.empty() && bqueue.empty());
        }
    private:
        queue<int> aqueue;
        queue<int> bqueue;
    };



  • 相关阅读:
    软件工程逃课小组——冲刺集合
    软件工程逃课小组——冲刺日志(第一天)
    2020软件工程作业05
    软工实践第四次作业
    第三次
    第二次作业
    2020软件工程作业01
    Ubantu18安装SU(Seismic Unix)脚本
    Win10下通过anaconda搭建新环境并安装tensorflow-gpu
    Win10安装虚拟机(Ubantu18.04)并安装seismic unix(SU)
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687053.html
Copyright © 2011-2022 走看看