本文主要是介绍数据结构之---C语言实现拓扑排序AOV图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//有向图的拓扑排序
//杨鑫
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME 3
#define MAX_VERTEX_NUM 20
typedef int InfoType; //存放网的权值
typedef char VertexType[MAX_NAME]; //字符串类型
typedef enum{DG, DN, AG, AN}GraphKind; //{有向图,有向网,无向图,无向网}
//图的邻接表存储
typedef struct ArcNode
{int adjvex; //该弧所指向的顶点的位置 struct ArcNode *nextarc; //指向吓一条的指针InfoType *info; //网的权值指针
}ArcNode;typedef struct VNode
{VertexType data; //顶点信息ArcNode *firstarc; //第一个表结点的地址,指向第一条依附该顶点的弧的指针
}VNode, AdjList[MAX_VERTEX_NUM]; //头结点typedef struct
{AdjList vertices; int vexnum, arcnum; //图的当前顶点数和弧数int kind; //图的种类标志
}ALGraph;//若G中存在顶点u,则返回该顶点在图中的位置,都则返回-1
int LocateVex(ALGraph G, VertexType u)
{int i;for(i = 0; i < G.vexnum; ++i){if(strcmp(u, G.vertices[i].data) == 0)return i;return -1;}
}//采用邻接表存储结构,构造没有相关信息的图G(
这篇关于数据结构之---C语言实现拓扑排序AOV图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!