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

原文地址:https://www.cnblogs.com/Decmber/p/4921909.html