图的性质
总结无向图、有向图的结点数、边数、度数、连通性、强连通性等性质之间的联系
图的数据结构定义
写代码:定义一个顺序存储的图(邻接矩阵实现)
#define MaxVertexNum 150 //顶点数目的最大值
typedef char VertexType; //顶点的数据类型
typedef int EdgeType; //带权图中边上权值的数据类型
typedef struct MGraph {
int vernum; //顶点数
int edgenum; //边数
VertexType vertex[MaxVertexNum]; //顶点信息(一维数组)
EdgeType Edge[MaxVertexNum][MaxVertexNum]; //边信息(二维数组)
}MGraph;
写代码:定义一个链式存储的图(邻接表实现)
#define MaxVertexNum 150 //顶点数目的最大值
typedef struct ArcNode {
//边结点
int adjVex; //与对应头结点邻接的顶点编号
struct ArcNode* nextArc; //(指向下一个边结点)的指针
int weight; //(可有可无)对于带权图可存储边的权值
}ArcNode;
typedef char VertexType;
typedef struct VNode {
//头结点
VertexType data; //顶点信息
ArcNode* first; //(指向第一个邻接点)的指针
}VNode,adjList[MaxVertexNum]; //所有头结点放到数组中
typedef struct ALGraph{
int verNum; //图的顶点数
int edgeNum; //图的边数
adjList vertices; //顶点表(邻接表)
}ALGraph; //ALGraph是以邻接表存储的图的类型
自己设计一个不少于6个结点的带权无向图,并画出其邻接矩阵、邻接表的样子
带权无向图:
邻接矩阵:
邻接表: