2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)

这篇博客探讨了如何利用Java内置的LinkedList类来高效地实现队列数据结构。作者指出,由于队列的特性,使用动态数组实现可能会在出队时导致效率降低。通过选择双向链表,可以确保入队和出队操作的时间复杂度为O(1)。博客中展示了如何直接使用LinkedList的内置方法快速实现队列的入队、出队、清空、查看首尾元素以及判断队列是否为空等操作。
摘要由CSDN通过智能技术生成

话说。。。每次都用现成的类实现,是不是有点偷懒

//队列的本质也是线性表,特性为只在线性表首位端进行操作,为先进先出,和生活中排队的队列是一样的
//队列涉及到的操作主要是入队(enQueue)和出队(deQueue)
//其中,因为出队是在队尾操作,因此,用动态数组实现队列就会涉及到所有元素的前移,O(n)
//所以队列这里选择双向链表实现,得益于headnode和lastnode指针,无论入队出队都是O(1),牺牲空间换时间
//实际方法实现也和前面都一样,我就节省时间直接用java自带Linkedlist类实现了
//话说java自带的Linkedlist居然就是双向不是单向,双链表的功能覆盖范围比单链表更广,存储上却多了一个指针空间



import java.util.LinkedList;
import java.util.List;

public class QueueZH<E> {
    private List<E> list = new LinkedList<>();

    public void enQueue(E element){
        list.add(0,element);
    }
    public E deQueue(){
        E element = list.remove(list.size()-1);
        return element;
    }
    public void clear(){
        list.clear();
    }
    public E peekHead(){
        E element = list.get(0);
        return element;
    }
    public E peekTail(){
        E element = list.get(list.size()-1);
        return element;
    }
    public boolean isEmpty(){
        return list.isEmpty();
    }

    public int size(){
        return list.size();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值