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则是在开头添加

  • 相关阅读:
    main函数的一些特性
    确保函数的操作不超出数组实参的边界
    今天学习了一点sed
    libevent 与事件驱动
    mvc3 action验证失败后的自定义处理
    使用spring.net+nibernate时如何用aspnet_regiis加密数据库连接字符串
    C# 中 IList IEnumable 转换成 List类型
    Nhibernate 过长的字符串报错 dehydration property
    小论接口(interface)和抽象类(abstract class)的区别
    C# 语言在函数参数列表中出现this关键词的作用
  • 原文地址:https://www.cnblogs.com/Decmber/p/4921909.html
Copyright © 2011-2022 走看看