zoukankan      html  css  js  c++  java
  • Java-Stack&Queue-LeetCode

    Implement Queue using Stacks
    
    class MyQueue {  
        Stack<Integer> s1 = new Stack<>();  
        Stack<Integer> s2 = new Stack<>();  
      
        // Push element x to the back of queue.  
        public void push(int x) {  
            s1.push(x);  
        }  
      
        // Removes the element from in front of queue.  
        public void pop() {  
            if(!s2.isEmpty()) s2.pop();  
            else {  
                while(!s1.isEmpty()) s2.push(s1.pop());  
                s2.pop();  
            }  
        }  
      
        // Get the front element.  
        public int peek() {  
            if(!s2.isEmpty()) return s2.peek();  
            else {  
                while(!s1.isEmpty()) s2.push(s1.pop());  
                return s2.peek();  
            }  
        }  
      
        // Return whether the queue is empty.  
        public boolean empty() {  
            return s1.empty() && s2.empty();  
        }  
    }  
    Implement Stack using Queues
    
    class MyStack {  
        // Push element x onto stack.  
        Queue<Integer> q1 = new LinkedList<Integer>();  
        Queue<Integer> q2 = new LinkedList<Integer>();  
          
        public void push(int x) {  
            q1.offer(x);  
        }  
      
        // Removes the element on top of the stack.  
        public void pop() {  
            while(q1.size()>1) q2.offer(q1.poll());  
            q1.poll();  
            Queue<Integer> q = q1;  
            q1 = q2;  
            q2 = q;  
        }  
      
        // Get the top element.  
        public int top() {  
            while(q1.size()>1) q2.offer(q1.poll());  
            int x = q1.poll();  
            q2.offer(x);  
            Queue<Integer> q = q1;  
            q1 = q2;  
            q2 = q;  
            return x;  
        }  
      
        // Return whether the stack is empty.  
        public boolean empty() {  
            return q1.isEmpty();  
        }  
    }  

    offer 添加一个元素并返回true 如果队列已满,则返回false
    poll 移除并返问队列头部的元素 如果队列为空,则返回null
    peek 返回队列头部的元素 如果队列为空,则返回null
    put 添加一个元素 如果队列满,则阻塞
    take 移除并返回队列头部的元素 如果队列为空,则阻塞
    element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常

    add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
    remove 移除并返回队列头部的元素 如果队列为空,则抛出一个
    NoSuchElementException异常

    注意:poll和peek方法出错进返回null。因此,向队列中插入null值是不合法的。

    JavaScript:

    http://www.111cn.net/wy/js-ajax/74924.htm

    UNshift(); --> pop()属于Queue先进先出

    push();---> pop()属于stack后进先出

    push是在末尾添加,而unshift则是在开头添加

  • 相关阅读:
    VCSA 6.5 升级 VCSA 6.7
    使用再生龙Clonezilla备份还原Linux系统
    gulp前端自动化构建工具学习笔记(mac)
    Echarts基本图表的学习笔记
    jQuery中$.ajax()用法
    jQuery实现淡入淡出轮播图带左右按钮及下方小圆点
    js解析XMl文件,兼容IE、Firefox、谷歌
    HTML<marquee>标签实现滚动公告通知、广告的效果
    画太极
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
  • 原文地址:https://www.cnblogs.com/Decmber/p/4921909.html
Copyright © 2011-2022 走看看