风也温柔

计算机科学知识库

java怎么实现链表数据结构 Java数据结构--队列的代码实现(基于链表+数组)

  一:队列的定义(先进先出)

  队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作java怎么实现链表数据结构,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

  二:Java API中Queue类的方法摘要

  我们在实现队列的代码之前,先来了解一下Java API中Queue类的方法摘要,要知道它是如何创建使用的。

  ①如何创建Queue对象

  首先我们要知道,在Java中队列Queue是一个接口java怎么实现链表数据结构 Java数据结构--队列的代码实现(基于链表+数组),实现一个接口的话我们要重写其中所有的方法。那么这样我们在使用队列的时候就会比较麻烦了。

  我们来看一下Java API中的类

  在图中我们可以看到类实现了Queue类的接口,因此我们可以把类当做Queue类来使用,这样我们就可以new 类来使用队列

  ②队列的几种常用方法(入队出队)运用

  下面我们来看一下Queue类中的方法摘要,并来运行一下其中最常用的几种方法(入队出队),以便于我们初学者更好的了解并使用队列

  三:队列的代码实现(要先了解泛型)

  知道了队列是如何创建并使用的,下面我们就基于数组和链表来依次实现队列

  1.基于数组的实现 Ⅰ.方法一:动态数组

  思路:定义两个指针front和tail,入队在tail位置,更新tail指针java怎么实现链表数据结构,出队在front位置,更新front位置,若数组满了,再去扩展数组长度

  如图所示:

  Ⅱ.方法二:循环数组(仅限于数据不是很大)

  上述单项数组的实现,出队的话front向前移,那么数组中front前面的空间是不是就用不到了。像栈一样,即使队列中有许多操作的情况下,队列也不是很大。那么我们就可以用一个循环数组来优化一下

  只要front或者tail到达数组对尾,它就绕回开头

  据图我们来了解一下

  ①入队 offer

  ②出队 poll

  ③获取对尾元素但不做出队 peek

  ④是否为空

  2.基于链表的实现

  队列的链式存储结构简称为链式队列。它实际上是一个限制仅在表头删除和表尾插入的单链表。

  基于链表,首先我们先要创建一个节点对象

  ①入队 offer

  思路:表尾插入,更新tail指针

  ②出队 poll

  思路:表头删除,更新front指针,值得注意的是:如果队列为空,则返回null

  ③获取对尾元素但不出队 peek

  ④是否为空

  下面我们来剧此实现一下

  3.结果显示

  ①基于循环数组的实现

  ②基于链表的实现

  各位的都实现了吗?

  4.其他的队列

  除了上述的队列,队列还存在双端队列,优先级队列以及阻塞队列等等,这都需要我们能够熟悉掌握并且熟练应用。

  如有错误,不足之处,望各位指出更正₍˄·͈༝·͈˄*₎◞ ̑̑

  文章来源:https://blog.csdn.net/m0_74808313/article/details/130236729