C?
是否有任何可靠且简单的优先级队列(首选链接列表,不是必需的)实现?更一般地说,你使用什么C标准库?
答案 0 :(得分:5)
PQLib (当前接受的答案)不完整,且该功能与此帖子的文档不符。例如,pq_dequeue文档说它返回一个条目。实现返回NULL。代码中有许多“待办事项”注释,例如“从其堆中删除包含最高优先级条目的节点”。缺少必要的逻辑。
对于任何寻找优先级队列的人:我建议找一些具有良好通过单元测试的代码。我不建议使用PQLib,除非它已更新并包含测试。
对于PQLib的所有者或任何推荐它的人:我认为这段代码已经完成并花了相当多的时间进行调试,直到我意识到它不是,这令人沮丧。请不要推荐您未尝试或知道正在进行的工作的代码。
答案 1 :(得分:4)
伴随source code Robert Sedgewick的Algorithms in C, Parts 1-4 (Fundamental Algorithms, Data Structures, Sorting, Searching)包含基于堆的实现和基于列表的实现。请参阅第9章 - 优先级队列和堆栈。
答案 2 :(得分:3)
我有一个用C编写的优先级队列,托管在谷歌代码上。麻省理工学院许可证
https://code.google.com/p/pqueue-heap-c/source/browse/trunk/pqueue.cpp
代码已经在一些项目中使用,所以它很可靠,但我在98年写了它,所以我不记得如何使用它。不要被cpp扩展程序误导。这是直接的C。
答案 3 :(得分:0)
查看PQLib。
我使用标准的C标准库。 ;)