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

    }
}

运行截图

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

相关推荐
paeamecium2 小时前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试
Book思议-2 小时前
【数据结构】栈与队列全方位对比 + C 语言完整实现
c语言·数据结构·算法··队列
是苏浙3 小时前
初识集合框架
java·数据结构
如何原谅奋力过但无声4 小时前
【chap11-动态规划(上 - 基础题目&背包问题)】用Python3刷《代码随想录》
数据结构·python·算法·动态规划
小王C语言5 小时前
【基础IO】————简单设计一下libc库
前端·数据结构·算法
_日拱一卒6 小时前
LeetCode:滑动窗口的最大值
数据结构·算法·leetcode
老约家的可汗6 小时前
list 容器详解:基本介绍与常见使用
c语言·数据结构·c++·list
Book思议-6 小时前
【数据结构】字符串模式匹配:暴力算法与 KMP 算法实现与解析
数据结构·算法·kmp算法·bf算法
mifengxing7 小时前
力扣HOT100——(1)两数之和
java·数据结构·算法·leetcode·hot100
罗湖老棍子7 小时前
【 例 1】区间和(信息学奥赛一本通- P1547)(基础线段树和单点修改区间查询树状数组模版)
数据结构·算法·线段树·树状数组·单点修改 区间查询