1.直接上一个结构体
struct AdjMatrix{
};
2.只有两个元素 顶点vertex 边edge 至于为什么是一维数组 二维数组另见其他文章
struct AdjMatrix{
char vertexs[自己确定的顶点数]; // s表示为英语中的复数的意思
int edges[自己确定的顶点数][自己确定的顶点数]; // 这么干可不就是一个矩阵?
};
3.处理 “自己确定的顶点数” 顶点vertex 边edge 的“类型” 使其变的更加的专业
#define VRETEX_NUM 10
//顶点元素类型
typedef char vertex_typedef
//边的权值类型,注意这里其实看不出这到底是无向图还是有向图。但是可以确定的是1/0也可以进行处理问题,0的意思是不进行直接的相连,1就是存在相邻的边或者是弧的意思
typedef int edge_typedef
struct AdjMatrix{
//存储顶点元素
vertex_typedef vertexs[VRETEX_NUM];
//存储边元素,使用了邻接矩阵来存储边或者是弧的集合
vertex_typedef edges[VRETEX_NUM][VRETEX_NUM];
};
PS:清晰如此的变量的设置,其实有一点国语的详细了,可以试试在简单一点的设置,就取首字母!
4.注意一下结构体中的第一行就行了
#define VRETEX_NUM 10
typedef char VT
typedef int ET
struct AdjMatrix{
int vertex;
VT vertexs[VRETEX_NUM];
ET edges[VRETEX_NUM][VRETEX_NUM];
};
还是再写一写比较好,我总感觉比写在纸上好一点,虽然现在有了一点小目的,直接就接住自己的进度写了,其他的就再看时间补吧!!!
图的存储
PS:对于一个图而言,现在是许要自己去写码的,于是乎直接看就行了,就是顶点vertex和边edge,就是这两个就没有了,无他!那么考虑考虑如何让进行存储就行了,前辈们已经想出来好多,只管以下的就行了,但是以下的又如何进行编码?
邻接矩阵
我们假设有一个图(可以是有向图,也可以是无向图),其有N个顶点,则有邻接矩阵是一个N*N的方阵,定义为
arc[i][j] = 1 若在这个图中间存在,一条线,也就是表示术边edge的意思
0 其他情况
很显然你是知道需要写出,结构体struct的样式,以及所谓的定义类型的typedef,值得注意的是,你需要写出 类型+一维数组 以及 类型+二维数组的样式
就是文章开头的,仔仔细细的看,并且要记住的!