当前位置: 首页 > 网络应用技术

数据结构的原理 - 队列(队列)和Java实施案例

时间:2023-03-06 18:02:58 网络应用技术

  队列仅允许在一端插入操作和另一端删除操作的线性表。本文详细介绍了队列的特征,并使用Java语言基于订单结构和链结构,实现了队列分别。

  队列只能在一端插入操作和另一端删除操作的线性表。队列的工作原理与现实生活中的队列完全相同。请您与您的朋友在汽车站排队。。如果您在他面前,您将首先上车,后来的人们将被排名在您的朋友之后。队列的工作原理与此相同。

  队列是首先的线性表,被称为FIFO。插入的末端称为团队的尾巴,删除One End称为团队。请确定队列为Q =(A1,A1,A1,A2,......,AN),然后A1是团队元素,是团队的最终元素。这样,当我们可以删除时,我们总是从A1开始,当插入时,它在结束。

  因为队列是线性表,所以队列也可以在存储结构和链存储结构中实现。Java提供了许多线程队列实现,例如JUC中的各种阻止和非覆盖队列,在生产环境中,在生产环境中,各种消息队列(例如Kafka)使用最基本的队列特征。队列的频率高于堆栈。

  关于Java堆栈的数据结构,您可以阅读本文:数据结构-Stack(堆栈)的原理以及Java实现和后缀表达式的苦难。

  与堆栈不同的是,团队的进入和出发操作处于不同的目的。如果实现堆栈的想法,则如果团队是数组元素的最大索引,则排队是添加了最大索引后索引的元素。O(1);但是队列即将在阵列的头部。目前,所有元素都将被移动,并且时间复杂度为O(n)。如果团队处于数组元素的起始索引,则队列变得更快,但是队列的时间复杂性变为O(n)。

  因此,有必要灵活处理团队的对手或尾巴。它不再固定在数组启动索引或最大索引上。它应该是可变的。目前,您需要添加外部指针来保存“团队负责人”和“尾巴”。操作数据时,您只需要操作团队负责人和团队的尽头,以便团队的时间复杂性团队是O(1)。

  根据上述实践,团队和尾巴无需修复,团队和团队的运行确实非常方便。

  地图上可能有情况。该团队移至阵列的中间,由于增加了元素,团队的尾巴被移至阵列的尽头。目前,如果团队重新输入,阵列索引溢出将抛出一个ArrayIndexOutOfBoundSexception,但是阵列的前半部分尚未使用,尚未使用个体空间,此时,此时浪费了空间。

  上面的溢出称为“错误溢出”。假溢出的方法是,当背部满是从头开始,即头部和尾巴的循环。我们是指头部和尾巴的序列队列作为循环队列。

  周期队列解决了假溢出的问题,同时,团队和出发时间为o(1)。此时需要考虑的只是数组容量有限的问题。

  队列的链存储结构实际上是线性表的单个链列表,但只能是尾巴和尾声。我们将其称为连锁队列。为了操作便利性,我们将团队的头和指针指向链条队列的头节点,尾巴指针指向终端节点。

  可以看出,使用链结构实现队列比顺序结构更简单。

  本文介绍了队列的基本概念,并提供了简单的实现。队列属于特殊的线性表。“数据的第一次处理”是一个非常常见的想法,因此队列的应用范围非常宽。实际上,我们可以直接接触的队列的应用高于堆栈的应用,例如各种并发队列。候选人作为下一个顶点。这次,队列可用于备用顶点的管理。

  此外,关于Java堆栈的数据结构,您可以阅读本文:数据结构的原理 - 堆栈(堆栈)以及Java实现和后缀表达式的操作。

  作者:Liu Java