什么是图?
表示多对多的关系
怎么在程序中表示图?
- 邻接矩阵
- 邻接表
邻接矩阵
邻接矩阵G[N][N]——N个顶点从0到N-1编号 ,若v[i][j]==1,则(i,j)是一组边。
优点:
1 :方便检查任意一对顶点间是否存在边
2: 方便找任一顶点的所有“邻接点”
3: 方便计算任一顶点的“度”(从该点发出的边数为“出 度”,指向该点的边数为“入度”)
/*邻接矩阵的定义*/
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100 /* 最大顶点数,应由用户定义 */
#define INFINITY 65535
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef char VertexType; /* 顶点类型应由用户定义 */
typedef int EdgeType; /* 边上的权值类型应由用户定义 */
typedef struct
{
VertexType vexs[MAXVEX]; /* 顶点表 */
EdgeType arc[MAXVEX][MAXVEX];/* 邻接矩阵,可看作边表 */
int numNodes, numEdges; /* 图中当前的顶点数和边数 */
}MGraph;
/* 建立无向网图的邻接矩阵表示 */
void CreateMGraph(MGraph *G)
{
int i,j,k,w;
printf("输入顶点数和边数:\n");
scanf("