采用邻接矩阵创建一个有向网N
分析:图的创建主要利用输入的各个顶点,并存储到一个向量(一维数组)中,然后通过输入两个顶点及权重创建弧,利用二维数组表示,因此,利用邻接矩阵创建图的存储需要两个数组:一个一维数组和一个二维数组。
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
typedef char VertexType[4];
typedef char InfoPtr;
typedef int VRType;
#define INFINITY 10000//定义一个无限大的值
#define MAXSIZE 100//最大顶点个数
typedef enum {DG,DN,UG,UN}GraphKind;
//图的类型:有向图,有向网,无向图和无向网
typedef struct
{
VRType adj;//对于无权图,用1表示相邻,0表示不相邻;对于带权图,存储权值
InfoPtr *info;//与弧或边的相关信息
}ArcNode,AdjMatrix[MAXSIZE][MAXSIZE];
typedef struct//图的类型定义
{
VertexType vex[MAXSIZE];//用于存储顶点
AdjMatrix arc;//邻接矩阵,存储边或弧的信息
int vexnum,arcnum;//顶点数和边的数目
GraphKind kind;//图的类型
}MGraph;
int LocateVertex(MGraph N,VertexType v)
//在顶点向量中查找顶点v,找到返回在向量的序号