//图:
/*
顶点集合:V(vertex)
边的集合:E(edge)
边是顶点对:(v,w)属于E
有向边:<v,w>表示从v指向w的边(单行线)
不考虑重边和自回路
*/
//抽象数据类型的定义:
//1.类型名称:图(Gragh)
//2.数据对象集:G(V,E) 非空的有限顶点集V合一个有限边集合E组成
//3.操作集
/*常见术语:
1.无向图,有向图
2.网络:带权重的图
3.出度:从顶点出发的边数
4.入度:指向该点的边数
*/
/邻接矩阵表示法:G[N][N]
G[i][j]=1,若<vi,vj>是G中的边
0,else
但对于无向图,邻接矩阵会有一半的空间浪费(是对称的)
解决方法:用一个长为N(N+1)/2的一位数组存储下三角矩阵A
G00,G10,G11,G20…
Gij即为A[i*(I+1)/2+j]
Gij的值定义为权重
缺点:存储稀疏图时会有大量无效元素
*/
/*邻接表:G[N]为数组指针,对应矩阵每行一个链表,只存非0元素
缺点;
1.一定要够稀疏才合算!
2.关于任一顶点度的计算:
对无向图:是的
对有向图:只能计算出度,需构造逆邻接表才能计算入度
3.不方便检查任意一对顶点之间是否存在边
*/