【问题标题】:Are Priority Queues really Queues?优先队列真的是队列吗?
【发布时间】:2013-10-18 15:40:32
【问题描述】:

在Priority Queues中,元素根据其优先级从队列中插入和删除,因此在为任何优先级队列编写元素的插入和删除代码时;插入和删除是根据元素的优先级进行的。

假设你有一个元素为 1,5,6 的队列,元素的优先级是元素本身的值,现在需要插入一个优先级为 3 的元素;然后将元素插入到队列中的第二个位置,给出新队列 1,3,5,6。

但是队列被定义为一种数据结构,其中元素可以在末尾插入,在开头但不能在中间删除,但在上述情况下,元素被插入到第二个位置(即在队列中间)。那么如果优先队列不遵守队列的定义,那么优先队列真的是队列吗?

请解释一下。

【问题讨论】:

    标签: data-structures priority-queue


    【解决方案1】:

    优先级队列在某种意义上是“队列”,因为元素等待轮到它们。它们不是 Queue 抽象数据类型的子类型。

    【讨论】:

    • 那为什么叫优先级队列呢?
    • 因为它们是普通(非 ADT)意义上的“队列”:它们是成员到达、等待轮到然后离开的地方。 Queue ADT 是一个“队列”,其中等待时间最长的成员将被选中。 Priority Queue ADT 是一个“队列”,接下来会选择优先级最高的成员。
    • +1 我不能再问他们阻止我的问题了。我好可怜。你投反对票的人? :(
    【解决方案2】:

    队列被描述为一种信息结构,其中组件可能在关闭时嵌入并在开始时被擦除但不在中心,但是在上面描绘的情况下,组件嵌入在第二个区域(即队列中间)。

    【讨论】:

    • 你知道你什么时候要做,不是吗?
    【解决方案3】:

    是的,优先级队列仍然是队列,因为项目按照它们在队列中的位置顺序提供服务。但是,在这种情况下,优先级与每个项目相关联,并相应地提供服务。

    【讨论】:

      【解决方案4】:

      优先级队列是英语单词队列意义上的队列,而不是名为“队列”的其他数据结构的严格子类型。那里没有继承,它们只是描述其目的的名称。

      【讨论】:

        猜你喜欢
        • 2017-04-11
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        • 2010-12-28
        • 2012-03-28
        • 2011-08-21
        • 2016-07-11
        • 1970-01-01
        相关资源
        最近更新 更多