Advertisement

用C语言实现有向无环图的拓扑排序算法

阅读量:

对AOV网实施拓扑排序的核心原理在于:首先在AOV网中寻找一个入度为零的顶点并将其输出,随后移除该顶点,并同时删除所有以该顶点作为终点的边,之后持续执行上述操作,直至所有顶点均被输出或AOV网中不再存在入度为零的顶点。

在此过程中,所采用的图数据结构为邻接表,并在顶点表中额外添加了用于记录顶点入度的信息项。

以下代码已在DEV C++环境中成功编译并运行通过。

复制代码
 #include <stdio.h>

    
 #include <stdlib.h>
    
 #define MAXVEX 20
    
  
    
 typedef struct EdgeNode
    
 {
    
 	int adjvex;//邻接点域,存储该顶点对应的下标 
    
 	struct EdgeNode *next;//链域,指向下一个邻接点 
    
 }EdgeNode;
    
 typedef struct VertexNode
    
 {
    
 	int in;//顶点入度
    
 	char data;//顶点域,存储顶点信息
    
 	EdgeNode *firstedge;//边表头指针 
    
 }VertexNode,AdjList[MAXVEX];
    
 typedef struct
    
 {

全部评论 (0)

还没有任何评论哟~