【发布时间】:2010-04-10 16:08:15
【问题描述】:
C 是否有任何可靠且简单的优先级队列(首选链表,不是必需的)实现?
更一般地说,您使用哪些 C 标准库?
【问题讨论】:
-
为什么说“什么标准库?”
-
我喜欢在二项式堆上实现我的 PQ。
标签: c
C 是否有任何可靠且简单的优先级队列(首选链表,不是必需的)实现?
更一般地说,您使用哪些 C 标准库?
【问题讨论】:
标签: c
PQLib(当前接受的答案)不完整并且功能与本文发布时的文档不匹配。例如,pq_dequeue 文档说它返回一个条目。实现返回 NULL。代码中有很多“TO DO”cmets,例如“从其堆中删除包含最高优先级条目的节点”。缺少基本逻辑。
对于任何寻找优先级队列的人:我建议找到一些具有良好、通过单元测试的代码。我不推荐 PQLib,除非它已更新并包含测试。
致 PQLib 的所有者或任何推荐它的人:我认为这段代码是完整的,并花了相当多的时间调试,直到我意识到它不是,这令人沮丧。请不要推荐您没有尝试过或知道正在开发的代码。
【讨论】:
伴随Robert Sedgewick 的Algorithms in C, Parts 1-4 (Fundamental Algorithms, Data Structures, Sorting, Searching) 的source code 包含基于堆和基于列表的实现。请参阅第 9 章 - 优先级队列和堆排序。
【讨论】:
我有一个用 C 语言编写的优先级队列,托管在谷歌代码上。麻省理工学院许可
https://code.google.com/p/pqueue-heap-c/source/browse/trunk/pqueue.cpp
代码已经在几个项目中使用过,所以它很可靠,但我是在 98 年写的,所以我不记得如何使用它了。不要被 cpp 扩展所误导。是纯C。
【讨论】:
查看PQLib。
我使用标准 C 标准库。 ;)
【讨论】: