//有向图的拓扑排序
//杨鑫
#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图
最新推荐文章于 2024-03-06 16:08:29 发布