Data structures 优先级队列与队列

Data structures 优先级队列与队列,data-structures,queue,priority-queue,Data Structures,Queue,Priority Queue,优先级队列如何定义队列数据结构。既然它不遵循FIFO,那么它不应该被命名为优先级数组或优先级链表吗?因为优先级队列不像优先级队列中的FIFO队列那样遵循某种方式,所以高优先级的元素在低优先级的元素之前被服务。 “如果两个元素具有相同的优先级,则根据它们在队列中的顺序为它们提供服务。” 我认为这将回答您的问题如果您查看大多数使用的实现,优先级队列本质上是堆-它们以程序员定义的优先级为基础的特定方式排列-在一个简单的示例中,是整数的升序或降序 将优先级队列视为一个队列,在该队列中,您不是根据添加元素

优先级队列如何定义队列数据结构。既然它不遵循FIFO,那么它不应该被命名为优先级数组或优先级链表吗?因为优先级队列不像优先级队列中的FIFO队列那样遵循某种方式,所以高优先级的元素在低优先级的元素之前被服务。 “如果两个元素具有相同的优先级,则根据它们在队列中的顺序为它们提供服务。”
我认为这将回答您的问题

如果您查看大多数使用的实现,优先级队列本质上是堆-它们以程序员定义的优先级为基础的特定方式排列-在一个简单的示例中,是整数的升序或降序

将优先级队列视为一个队列,在该队列中,您不是根据添加元素的时间来检索元素,而是根据元素之间的比较方式来检索元素。在教科书示例中,这种比较可以是简单的升序或降序。您可以从另一个答案的类比中理解ADT:

你在经营一家医院,病人也来了。只有一个 在职医生。第一个人走了进来,他马上就发球了。 接下来,一位感冒患者进来需要帮助。你加上他 他排队等候医生的到来。 接着,一个头上拿着斧头的人从门里走了进来。他是 他被赋予更高的优先权,因为他有更高的医疗责任。 所以那个感冒的人在排队时被撞倒了。接下来,有人来了 呼吸有问题。所以,又一次,感冒的人 在优先权上被撞倒。这在现实世界中被称为trigaing- 但在这种情况下,这是一条医疗线

在代码中实现这一点将使用优先级队列和工作队列 螺纹(医生)在耗材/工作单元上执行工作 (病人)

在实际场景中,您可能有等待CPU处理的进程,而不是患者

阅读: