【java-数据结构18-队列】

上篇文章,我们已经完成了栈的学习,下面,我们将进行队列的学习,话不多说,上正文~

1.队列

概念

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

队列每次存数据的时候,都会在队尾进入存数据,出数据的时候会在队头出,如图

不要忘记,队列是先进先出

2.队列的模拟实现

我们可以把双向链表当成队列,此时此刻,可以从队尾进,队头出,如图

双链表如此,单链表亦然,如图

这里还有一个要注意的点,队列分为普通队列(queue)和双端队列 (dequeue),普通队列是队尾进队头出 ,而双端队列顾名思义就是两端都可以进,两端都可以出,如图

下面我们先实例化一个队列代码如下

java 复制代码
public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue1= new LinkedList<>();
        Queue<Integer> queue2 = new LinkedList<>();
    }
}

这里,我们不要忘记导入类

复制代码
import java.util.LinkedList;
import java.util.Queue;

3.队列方法的学习

逻辑讲清楚了,下面我们来熟悉下队列的方法,如图

方法不多,我们依次进行调用

代码如下

1.入队列

java 复制代码
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue1= new LinkedList<>();
        Queue<Integer> queue2 = new LinkedList<>();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println("==========");

    }
}

结果

2.出队列

代码如下

java 复制代码
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue1= new LinkedList<>();
        Queue<Integer> queue2 = new LinkedList<>();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println(queue1.poll());

    }
}

运行结果

3.获取队头元素

java 复制代码
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue1= new LinkedList<>();
        Queue<Integer> queue2 = new LinkedList<>();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println(queue1.poll());
        System.out.println(queue1.peek());

    }
}

运行结果

4.获取有效元素个数

java 复制代码
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue1= new LinkedList<>();
        Queue<Integer> queue2 = new LinkedList<>();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println(queue1.poll());
        System.out.println(queue1.peek());
        System.out.println(queue1.size());

    }
}

运行结果

5.判断队列是否为空

java 复制代码
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue1= new LinkedList<>();
        Queue<Integer> queue2 = new LinkedList<>();
        queue1.offer(1);
        queue1.offer(2);
        queue1.offer(3);
        System.out.println(queue1.poll());
        System.out.println(queue1.peek());
        System.out.println(queue1.size());
        System.out.println(queue1.isEmpty());

    }
}

运行截图

那么,本篇文章就到此为止啦,下一篇我们将模拟队列的实现,还会讲解栈的例题~敬请期待叭~觉得小编讲的还可以的可以留个关注支持一下~谢谢观看~

相关推荐
OKkankan1 小时前
实现二叉树_堆
c语言·数据结构·c++·算法
指尖下的技术2 小时前
Mysql面试题----为什么B+树比B树更适合实现数据库索引
数据结构·数据库·b树·mysql
Bunury5 小时前
组件封装-List
javascript·数据结构·list
Joeysoda5 小时前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节
比特在路上5 小时前
ListOJ14:环形链表II(寻找环的入口点)
数据结构·链表
涅槃寂雨8 小时前
C语言小任务——寻找水仙花数
c语言·数据结构·算法
『往事』&白驹过隙;9 小时前
操作系统(Linux Kernel 0.11&Linux Kernel 0.12)解读整理——内核初始化(main & init)之缓冲区的管理
linux·c语言·数据结构·物联网·操作系统
就爱学编程9 小时前
从C语言看数据结构和算法:复杂度决定性能
c语言·数据结构·算法
半桔9 小时前
栈和队列(C语言)
c语言·开发语言·数据结构·c++·git
墨楠。10 小时前
数据结构学习记录-树和二叉树
数据结构·学习·算法