Javatpoint标志
Javatpoint标志

为什么优先队列不能像普通队列那样环绕?

在本教程中,我们将了解为什么优先级队列不能像常规队列那样环绕。

优先队列

优先队列是队列的一种形式,其中每个部分都有一个优先级值。所有元素都按优先级排序。这表明优先级更高的组件被优先提供。如果出现具有相同优先级的组件,则将按照它们的排队顺序给出这些组件。数组、链表、堆数据结构或二叉搜索树都可以用来构建优先队列。在所有这些数据结构中,堆数据结构有效地实现了优先级队列。

通过使用数组和换行,我们实现了Queues:

数组具有实现队列的能力:

  • 添加和删除项目需要O(1)时间。
  • 尺寸受限
  • 必须跟踪队列在字段中的起始和停止位置
  • 队列可能最终会“环绕”字段的末尾;这不是一个问题,而是一个必须处理的特殊情况。

到底什么是Wrap Around?

为了克服在队列未满时无法输入元素的问题,队列的前后箭头将其环绕在字段的开头。所有这些都被称为环形队列或环形缓冲区。后箭头现在被包装后放在前箭头的下面,颠倒了原来的顺序。

为什么优先级队列不能像普通队列那样绕圈?

  • 最流行的优先级队列实现之一是二进制堆,它没有包装的优势。
  • 我们可以在这样的循环缓冲区中实现优先级队列,但是效率可能会降低。
  • 理解这种优先级队列是一种抽象的数据结构是非常重要的。它指定操作,而不是它们的执行。优先级队列可以通过多种方式实现,包括二进制堆、排序数组、未排序数组、二叉树、跳过列表、链表等。
  • 优先级队列可以通过多种方式构建。
  • 相比之下,二进制堆似乎是优先级队列抽象数据类型的子集。
  • 从堆栈和队列的角度来看,堆栈和队列只是优先队列的专门化。
  • 一旦考虑到时间因素,队列(FIFO数据结构)就成为优先级队列,最老的项目获得最高优先级。
  • 堆栈(LIFO数据结构)是优先处理最近添加的项的队列。

结论:

队列是一种线性数据结构,以特定顺序保存元素。它使用FIFO(先进先出)方法访问元素。队列通常用于多线程和优先级队列系统来管理线程。在编程中,队列是一种重要的数据结构。队列采用先进先出(FIFO)原则,两端都是开放的。数据被插入队列的一端(称为后端或尾部),并在另一端(称为前端或队列的头部)删除。


下一个话题 C语言客户计费系统





Youtube 观看视频请加入我们的Youtube频道:现在加入

反馈


帮助他人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


B.Tech / MCA






Baidu
map