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


  • 相关阅读:
    (转)音频降噪算法 附完整C代码
    (转)移动直播技术秒开优化经验(含PPT)
    React实现简单的SearchBox搜索框组件
    为ARM安卓设备交叉编译C/C++语言程序
    Ubuntu无法用快捷键或图标打开终端
    Java基础系列-SPI你认识吗
    Java基础系列-时间日期API
    Java基础系列-RandomAccess
    Java基础系列-Optional
    那些字段适不适合建索引?
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6789306.html
Copyright © 2011-2022 走看看