Data structures 为什么可以';优先级队列不会像普通队列一样环绕吗?

Data structures 为什么可以';优先级队列不会像普通队列一样环绕吗?,data-structures,stack,queue,priority-queue,abstract-data-type,Data Structures,Stack,Queue,Priority Queue,Abstract Data Type,我知道,为了提高效率,请使用,以避免在删除元素时一直向下移动所有内容 然而,我不明白为什么不能像普通的队列一样绕来绕去。在我看来,优先级队列的行为比队列更相似,这怎么可能呢?最常见的优先级队列实现是a,它不会从环绕中受益。您可以创建在循环缓冲区中实现的优先级队列,但性能会受到影响 记住优先级队列是一种抽象的数据结构,这一点很重要。它定义了操作,但没有定义实现。您可以将优先级队列实现为二进制堆、排序数组、未排序数组、二叉树、跳过列表、链接列表等。有许多不同的方法来实现优先级队列 另一方面,二进制堆

我知道,为了提高效率,请使用,以避免在删除元素时一直向下移动所有内容


然而,我不明白为什么不能像普通的队列一样绕来绕去。在我看来,优先级队列的行为比队列更相似,这怎么可能呢?

最常见的优先级队列实现是a,它不会从环绕中受益。您可以创建在循环缓冲区中实现的优先级队列,但性能会受到影响

记住优先级队列是一种抽象的数据结构,这一点很重要。它定义了操作,但没有定义实现。您可以将优先级队列实现为二进制堆、排序数组、未排序数组、二叉树、跳过列表、链接列表等。有许多不同的方法来实现优先级队列

另一方面,二进制堆是优先级队列抽象数据类型的具体实现


至于堆栈和队列:实际上,堆栈和队列只是优先级队列的特化。如果将时间视为优先级,那么我们称之为队列(FIFO数据结构)实际上是一个优先级队列,其中最老的项是最高优先级。堆栈(后进先出数据结构)是一个优先级队列,其中最新的项目是最高优先级。

优先级队列-是一个广泛的概念,可以以多种方式实现,它可以作为堆栈和队列实现(不认为环绕有任何问题)。通常它实际上是作为堆实现的。您甚至可以将其实现为数组