图相关文章:
1. 图的建立 - 邻接矩阵与邻接表https://blog.youkuaiyun.com/m15253053181/article/details/127552328?spm=1001.2014.3001.55012. 图的遍历 - DFS与BFS
https://blog.youkuaiyun.com/m15253053181/article/details/127558368?spm=1001.2014.3001.55013. 顶点度的计算
https://blog.youkuaiyun.com/m15253053181/article/details/127558599?spm=1001.2014.3001.55014. 最小生成树 - Prim与Kruskal
https://blog.youkuaiyun.com/m15253053181/article/details/127589852?spm=1001.2014.3001.55015. 单源最短路径 - Dijkstra与Bellman-Ford
https://blog.youkuaiyun.com/m15253053181/article/details/127630356?spm=1001.2014.3001.55016. 多源最短路径 - Floyd
https://blog.youkuaiyun.com/m15253053181/article/details/128039852?spm=1001.2014.3001.55017. 拓扑排序AOV网
https://blog.youkuaiyun.com/m15253053181/article/details/128042358?spm=1001.2014.3001.5501
目录
顶点度的计算
对于无向图来说,顶点的度就等于与其相邻接的顶点的个数;而对于有向图来说,由于边的方向性,顶点的度很自然地被分为了入度
和出度
。有向图出度与入度的计算与无向图顶点的度的计算大同小异,因此仅以无向图为例。
1 邻接矩阵计算顶点的度
首先介绍一下邻接矩阵的特点:
邻接矩阵中包含了以下信息:
① G的顶点数p就是G的邻接矩阵A的阶数。
② G的边数q就是A中1的个数的一半。
③ 顶点的度
等于A的第i行上1的个数。
④ 若A的第i行上的全部元素都为0,则为孤立点。
⑤ A是对称且对角线上全部元素为0 (反自反且对称)。
⑥ 若两个图的邻接矩阵相等或通过交换某些行和列后相同,则这两个图是同构的。
其中,我们可以通过这一条来进行计算:
顶点
的度
等于A的第i行上1的个数。
显然,只需要统计矩阵某一行上非-1元的个数,便是该顶点的度。程序比较容易,请读者自行实现。
2 邻接表计算顶点的度
由邻接表的定义可以知道:
使用指针数组G[N],G[i]代表以第i个顶点为头结点的链表,只存与之邻接的顶点。
G[i]链表的长度(除去头结点-自身)即为顶点的度。程序比较容易,代码如下:
/* 计算邻接表个顶点的度 */
void CalcDegree_L(AdjList L, int arr[][MaxVertexNum])
{
int i, count;
LGNode pMove = NULL;
for (i = 0; i < L->numV; i++)
{
count = -1; // 除去自身
pMove = &(L->list[i]);
while (pMove)
{
count++;
pMove = pMove->next;
}
arr[0][i] = i;
arr[1][i] = count;
}
}