zoukankan      html  css  js  c++  java
  • leetCode(37):Implement Queue using Stacks

    Implement the following operations of a queue using stacks.

    • push(x) -- Push element x to the back of queue.
    • pop() -- Removes the element from in front of queue.
    • peek() -- Get the front element.
    • empty() -- Return whether the queue is empty.
    Notes:
    • You must use only standard operations of a stack -- which means only push to toppeek/pop from topsize, and is empty operations are valid.
    • Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
    • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
          两个栈,一个作为压入栈,一个作为弹出栈。当弹出栈为空时,把压入栈中的数据依次弹出并压入到弹出栈中。

    假设两者均为空,说明队列为空。

    class Queue {
    public:
        // Push element x to the back of queue.
        void push(int x) {
            push_stack.push(x);
        }
    
        // Removes the element from in front of queue.
        void pop(void) {
            if (pop_stack.empty())
    		{
    			while (!push_stack.empty())
    			{
    				pop_stack.push(push_stack.top());
    				push_stack.pop();
    			}
    			if (!pop_stack.empty())
    				pop_stack.pop();
    		}
    		else
    		{
    			pop_stack.pop();
    		}
        }
    
        // Get the front element.
        int peek(void) {
            if (pop_stack.empty())
    		{
    			while (!push_stack.empty())
    			{
    				pop_stack.push(push_stack.top());
    				push_stack.pop();
    			}
    			if (!pop_stack.empty())
    				return pop_stack.top();
    		}
    		else
    		{
    			return pop_stack.top();
    		}
    		return 0;
        }
    
        // Return whether the queue is empty.
        bool empty(void) {
            if (pop_stack.empty() && push_stack.empty())
    			return true;
    		else
    			return false;
        }
        
    private:
    	stack<int> pop_stack;
    	stack<int> push_stack;
    };


  • 相关阅读:
    ubantu安装pip3
    ubantu更换镜像源
    git 快速上手
    python zmq(ZeorMQ)
    用python连接SQL server数据库
    Django模板url需要注意的地方
    希尔排序记录--最好写的排序
    口腔溃疡要对症-------阴虚火旺和阳虚火旺
    与大学室友,保持一定的距离
    取指 间址 执行 中断 FE IND EX INT四个触发器
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6789306.html
Copyright © 2011-2022 走看看