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

    }
}

运行截图

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

相关推荐
charliejohn3 分钟前
计算机考研 408 数据结构 哈夫曼
数据结构·考研·算法
好易学·数据结构1 小时前
可视化图解算法76:最大子数组和
数据结构·算法·leetcode·面试·动态规划·力扣·笔试
falldeep2 小时前
Pandas入门指南
数据结构·算法·leetcode·pandas
闲看云起3 小时前
Leetcode-day4:从「移动零」到「盛最多水的容器」
数据结构·算法·leetcode·职场和发展
nuowenyadelunwen3 小时前
Harvard CS50 Problems Set 5
数据结构·harvard cs50·树,哈希表,链表
mjhcsp4 小时前
P14795 [JOI 2026 二次预选] 分班 / Class Division
数据结构·c++·算法
girl-07264 小时前
2025.12.29实验题目分析总结
数据结构·算法
sin_hielo4 小时前
leetcode 840
数据结构·算法·leetcode
吴声子夜歌5 小时前
数据结构——通用树(N叉树)
数据结构
surtr16 小时前
常见排序模板(冒泡排序,希尔排序,堆排序,归并排序,快速排序)
数据结构·算法·贪心算法·排序算法