【问题标题】:How do I priority Queue implementation using circular queue in C++?如何在 C++ 中使用循环队列优先队列实现?
【发布时间】:2010-12-11 19:24:41
【问题描述】:

应该优先获取队列中具有最高优先级的元素值。

【问题讨论】:

  • 根据定义它不是队列。改用堆。
  • 有一个 std::priority_queue。
  • 似乎产生了一些摩擦。也许你可以添加一些上下文——你有多少优先级;更广泛的目标是什么,或者这是一个抽象的问题;我假设您想要一个固定大小的优先级队列?这可能会帮助一些评论者直接回答......

标签: c++ data-structures queue


【解决方案1】:

您可以将优先级队列实现为二进制最小堆。每个条目的键可以代表它的“优先级”,键越低,它的优先级越高。因此,删除根条目将返回具有最高优先级的条目。

【讨论】:

    【解决方案2】:

    您是否需要多个队列,每个队列具有不同的优先级?你真正想要解决的问题是什么?

    队列的概念是——它是一个队列,队列中的下一个具有优先级,您应该只通过从队列中弹出东西来通过队列。用另一个队列实现一个优先级队列——无论是否循环——并不是最有效的事情。您可以将其实现为堆或树 - 有很多文章,包括一篇关于 Wikipedia on priority queues 的文章。

    【讨论】:

    • 是的,优先级队列不同en.wikipedia.org/wiki/Priority_queue
    • 如果我们谈论的是多个优先级(例如 1000),那么多个队列并不是最好的解决方案。
    • @Falmarri -- 不确定您是否正确阅读或解释了我的答案。用另一个队列创建一个优先队列没有任何意义——认为你错过了重点。
    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多