4

我正在尝试实现 dijkstra 的寻路算法,并且需要某种优先级队列来存储信息。

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

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

谢谢你的时间!

编辑:人们提到了二进制堆,你介意稍微提示一下如何开始吗?

4

1 回答 1

5

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

于 2012-04-10T13:25:56.570 回答