C中的优先级队列实现

对于C,是否有任何可靠且简单的优先级队列(链接列表首选,不必要)实现?

更一般地说,你使用什么C标准库?

查看PQLib 。

我使用标准的C标准库。 ;)

PQLib (当前接受的答案) 不完整 ,function与此post的文档不匹配。 例如,pq_dequeue文档说它返回一个条目。 实现返回NULL。 代码中有许多“待办事项”注释,例如“从其堆中删除包含最高优先级条目的节点”。 缺少必要的逻辑。

对于任何寻找优先级队列的人:我建议找一些具有良好通过unit testing的代码。 我不建议使用PQLib,除非它已更新并包含测试。

对于PQLib的所有者或任何推荐它的人:我认为这段代码已经完成并花了相当多的时间进行调试,直到我意识到它不是,这令人沮丧。 请不要推荐您未尝试或知道正在进行的工作的代码。

Robert Sedgewick的C算法,第1-4部分(基本算法,数据结构,排序,搜索)中包含的源代码包含基于堆的实现和基于列表的实现。 请参阅第9章 – 优先级队列和堆栈。

我有一个用C编写的优先级队列,托管在谷歌代码上。 MIT许可证

https://code.google.com/p/pqueue-heap-c/source/browse/trunk/pqueue.cpp

代码已经在一些项目中使用,所以它很可靠,但我在98年写了它,所以我不记得如何使用它。 不要被cpp扩展程序误导。 这是直的C.