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

    }
}

运行截图

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

相关推荐
Boom_Shu12 分钟前
长方形的关系
数据结构·c++·算法
Lsk_Smion1 小时前
力扣实训 _ [543].二叉树的直径 _ [23].合并K个升序列表
数据结构·算法·leetcode
ID_180079054734 小时前
淘宝商品详情数据接口深度解析:架构、鉴权、数据结构与实战
数据结构·架构
散峰而望4 小时前
【算法练习】算法练习精选:陶陶摘苹果(基础+升级)、Music Notes、字串变换,你能AC几道?
数据结构·c++·算法·leetcode·贪心算法·github·动态规划
凤凰院凶涛QAQ5 小时前
《Java版数据结构 & 集合类剖析》集合框架的封装设计与顺序表:“从 Iterable 到 ArrayList:集合框架的‘职业树“
java·开发语言·数据结构
8Qi85 小时前
LeetCode 148. 排序链表 —— 解法一:自顶向下递归(分治 + 归并)
数据结构·算法·leetcode·链表·递归·分治·归并
8Qi85 小时前
LeetCode 148. 排序链表 —— 解法二:自底向上归并(迭代,O(1) 空间)
数据结构·算法·leetcode·链表·归并·迭代
嘿黑嘿呦6 小时前
数据结构-图论-最小生成树
数据结构·算法·图论
欧米欧7 小时前
C++进阶数据结构之红黑树
数据结构
papership7 小时前
【入门级-数据结构-1、线性结构:链 表(单链表、双向链表、循环链表 )】
数据结构·算法·链表