数据结构之---C语言实现拓扑排序AOV图

//有向图的拓扑排序
//杨鑫
#include 
#include 
#include 
#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(用一个函数构造4种图)
int CreateGraph(ALGraph *G)
{
	int i, j, k;
	int w;					

你可能感兴趣的:(C,&&,C++,数据结构,算法)