zoukankan      html  css  js  c++  java
  • leetCode(37):Implement Queue using Stacks 分类: leetCode 2015-07-14 08:42 157人阅读 评论(0) 收藏

    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;
    };


  • 相关阅读:
    dragloader.js帮助你在页面原生滚动下实现Pull Request操作
    移动Web单页应用开发实践——实现Pull to Request(上/下拉请求操作)
    【转】移动Web单页应用开发实践——页面结构化
    前端网址收集!Amazing! 神奇!
    前端代码书写规范
    扫描工具 分析
    backtrack5渗透 笔记
    Sqlmap注入技巧集锦
    nmap 高级扫描用法
    小温谈数据库优化--数据设计篇(转)
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687062.html
Copyright © 2011-2022 走看看