Java-Stack&Queue-LeetCode

本文介绍了如何使用栈实现队列的功能,以及如何利用队列实现栈的操作。通过两个具体的类MyQueue和MyStack展示了这两种数据结构之间的转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值