【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());

    }
}

运行截图

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

相关推荐
浮灯Foden2 小时前
算法-每日一题(DAY13)两数之和
开发语言·数据结构·c++·算法·leetcode·面试·散列表
山顶风景独好6 小时前
【Leetcode】随笔
数据结构·算法·leetcode
科大饭桶7 小时前
C++入门自学Day11-- String, Vector, List 复习
c语言·开发语言·数据结构·c++·容器
Cx330❀9 小时前
【数据结构初阶】--排序(四):归并排序
c语言·开发语言·数据结构·算法·排序算法
艾莉丝努力练剑10 小时前
【C语言16天强化训练】从基础入门到进阶:Day 1
c语言·开发语言·数据结构·学习
番薯大佬10 小时前
编程算法实例-冒泡排序
数据结构·算法·排序算法
ankleless10 小时前
数据结构(03)——线性表(顺序存储和链式存储)
数据结构·考研·链表·顺序表·线性表
KarrySmile10 小时前
Day8--滑动窗口与双指针--1004. 最大连续1的个数 III,1658. 将 x 减到 0 的最小操作数,3641. 最长半重复子数组
数据结构·算法·双指针·滑动窗口·不定长滑动窗口·最大连续1的个数·最长子数组
大阳1231 天前
线程(基本概念和相关命令)
开发语言·数据结构·经验分享·算法·线程·学习经验
FPGA1 天前
探讨4B/5B编码、8B/10B编码区别以及FPGA实现
数据结构