C创建有序优先级队列

C创建有序优先级队列,c,algorithm,data-structures,priority-queue,C,Algorithm,Data Structures,Priority Queue,我正在尝试实现dijkstra的路径查找算法,需要某种优先级队列来存储信息 在过去,例如fifo或filo PQ,我只使用一个数组,然后两个指针指向当前插入和当前“查找”位置,然后指向“删除”,项目将查找位置向上移动一次 但是对于dijkstra,我需要一个按重量(或当前距离)排序的PQ,然后看看位于PQ顶部的PQ,我将如何在C中实现它 谢谢你的时间 编辑:人们已经提到了二进制堆,你介意就如何开始给出一点提示吗?最简单的选择是实现基于C数组的二进制堆。如果你最终使用二进制堆,那么不实现reduc

我正在尝试实现dijkstra的路径查找算法,需要某种优先级队列来存储信息

在过去,例如fifo或filo PQ,我只使用一个数组,然后两个指针指向当前插入和当前“查找”位置,然后指向“删除”,项目将查找位置向上移动一次

但是对于dijkstra,我需要一个按重量(或当前距离)排序的PQ,然后看看位于PQ顶部的PQ,我将如何在C中实现它

谢谢你的时间


编辑:人们已经提到了二进制堆,你介意就如何开始给出一点提示吗?

最简单的选择是实现基于C数组的二进制堆。

如果你最终使用二进制堆,那么不实现reduce key,而是在每次到达节点时插入节点会更容易(如果你的图是稀疏的,那么会更快)(等价地,插入边)。您描述的过去使用的不是优先级队列,它只是一个队列。