拓扑排序是一种对有向无环图(DAG)进行排序的算法。在拓扑排序中,图的顶点表示任务,有向边表示任务之间的依赖关系。拓扑排序算法的目标是找到一种排序方式,使得每个任务在它的依赖任务之后被执行。
拓扑排序算法的步骤如下:
- 初始化一个队列,将所有入度为0的顶点加入队列中。
- 从队列中取出一个顶点,将该顶点输出,并将该顶点的所有邻接顶点的入度减1。
- 若有顶点的入度减为0,则将该顶点加入队列中。
- 重复步骤2和步骤3,直到队列为空。
拓扑排序算法的优点是可以解决有向无环图中的依赖关系问题,可以用于任务调度和编译器等领域。其缺点是只适用于有向无环图,对于存在环的图无法进行排序。
下面是用C语言实现拓扑排序算法的例子:
#include <stdio.h>
#define MAX 100
int ind