您现在的位置是:首页 > 伤感句子

“队列” 无罪,只是太美(Java篇)

作者:言安琪时间:2024-04-15 19:18:21分类:伤感句子

简介  文章浏览阅读739次,点赞54次,收藏31次。1. 队列的初识 2. Queue 类 3. 队列的实现

点击全文阅读

本篇会加入个人的所谓‘鱼式疯言’

❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!

请添加图片描述

前言

在上一篇文章中我们讲解了可爱又有意思的 的学习 , 而在这篇文章中小编主要讲解 栈 的 “双胞胎兄弟” —————— 队列

小编在这里先留三个问题哈

什么是 队列

队列 的特点有什么呢 ?

今天讲的 队列 有我们异同呢 ?

目录

队列的初识Queue 类队列的实现

一. 队列的初识

1. 队列的简介

队列:只允许在 一端进行插入数据操作,在另一端进行删除数据 操作的特殊线性表,队列具有先进先出FIFO(First In First Out)

入队列:进行插入操作的一端称为队尾(Tail/Rear)

出队列:进行删除操作的一端称为 队头(Head/Front)

在这里插入图片描述

二.Queue 类

在这里插入图片描述

在Java中, 我们的 队列 就是Java中的 Queue , 而Queue 是个接口,底层是通过 链表 实现的。

主要核心还是先入队的先出队先入先出

下面来具体使用一下我们 Queue 类吧 💖 💖 💖

1. 入队列

class Test2 {    public static void main(String[] args) {        Queue<Integer> q= new LinkedList<>();        q.offer(1);        q.offer(2);        q.offer(3);        q.offer(4);    }}

在这里插入图片描述

在这里插入图片描述

从中我们看到了先入的进入 队头 ,后入的进入 队尾

2. 出队列

class Test2 {    public static void main(String[] args) {        Queue<Integer> q= new LinkedList<>();        q.offer(1);        q.offer(2);        q.offer(3);        q.offer(4);        System.out.println("=========入队列=========");        System.out.println(q.poll());        System.out.println(q.poll());        System.out.println(q.poll());        System.out.println(q.poll());    }}

在这里插入图片描述

在这里插入图片描述

我们看到了 对头 数据先出栈, 队尾 数据后出栈

鱼式疯言

故队列的特点是:

先入先出,后入后出

3. 查队列

class Test2 {    public static void main(String[] args) {        Queue<Integer> q= new LinkedList<>();        q.offer(1);        q.offer(2);        q.offer(3);        q.offer(4);        System.out.println("=========出队列=========");        System.out.println(q.poll());  // 1        System.out.println(q.poll());  // 2        System.out.println("=========获取对头元素========");        System.out.println(q.peek());  // 3        System.out.println(q.peek());  // 3    }}

在这里插入图片描述

这里的 查队列 指的是 查找出我们对头的 第一个数据

故当我们删除掉先前对头的 12 时,我们的对头的数据就变成了 3,所以显示 3

4. 获取队列大小和队列是否为空

class Test2 {    public static void main(String[] args) {        Queue<Integer> q= new LinkedList<>();        q.offer(1);        q.offer(2);        q.offer(3);        q.offer(4);        System.out.println("=========出队列=========");        System.out.println(q.poll());  // 1        System.out.println(q.poll());  // 2        System.out.println("=========获取对头元素========");        System.out.println(q.peek());  // 3        System.out.println(q.peek());  // 3        System.out.println("======获取队列大小=======");        System.out.println(q.size());        System.out.println("=======判断队列是否为空=======");        if (q.isEmpty()) {            System.out.println("队列为空!");        } else {            System.out.println("队列不为空!");        }    }}

在这里插入图片描述

是的,我们的队列是有着和 一样的 == size() == 和 ==empty()==一样的方法

但聪明的小爱就有疑惑了,居然使用方法是一样的,那么我们的实现这个方法的 底层 是不是一样的呢 ? ? ?

这个问题问的好,下面就让我们动手实践去试试呗,看看我们的方法在实现的原理上是否是一样的 !! !

三. 队列的实现

一样,我们的队列既可以选择顺序表也可以选择链表 ,但这次就不一样了,这次小编的建议是选择 链表

具体为啥,我们先看看框架吧 💥 💥 💥

1. 建立框架

public class MyQueue implements IQueue {    List<Integer> queue;    public MyQueue() {        queue= new LinkedList<>();    }}

址所以用我们的链表来实现就是因为,链表对于删除头节点的那个数据的时间复杂度是 O(1)

而 顺序表 删除头数据的,由于要扭动数据,所以时间复杂度达到了 O(N)

故我们选择

 queue= new LinkedList<>();

这样 双向链表为框架进行实现

2. 入队列

请添加图片描述

@Overridepublic boolean offer(int val) {    queue.add(val);    return true;}

在这里插入图片描述

这里我们入队列用到了 双向链表 的的 尾插 功能

具体链表的功能可以参考

单链表详解链接

3. 出队列

请添加图片描述

    @Override    public int remove() {        return queue.remove(0);    }

在这里插入图片描述

这里我们 出队列 用到了 双向链表头删 功能

查队列

   @Override    public int peek() {        return queue.get(0);    }

在这里插入图片描述

这里利用到 链表 的获取第一个元素的功能

4. 获取队列大小和是否为空

@Overridepublic int size() {    return queue.size();}public boolean isEmpty() {    return queue.isEmpty();}

在这里插入图片描述

从中我们利用 链表的 size()isEmpty() 两个方法爱实现我们的队列

鱼式疯言

单链表也是可以实现我们的队列的

单链表详解链接

如果小伙伴们想熟悉 双向链表 的话,请移步小编的下一篇文章:== 双向链表== 哦 💖 💖 💖

总结

队列的初识 : 我们初识了队列并熟悉了它的特点Queue 类:明白了这个类下学会了使用我们队列的主要功能队列的实现: 在双向链表的搭配下,我们轻松的完成了队列的实现

可谓收获颇丰啊 💖 💖 💖 💖

如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正

希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖

在这里插入图片描述

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句