图(Graph):
1、表示“多对多”的关系
2、包含:
一组顶点:通常用V(Vertex)表示顶点集合
一组边:通常用E(Edge)表示边的集合
边是顶点对:(v,w)∈E,其中v,w∈V
有向边<v,w>表示从v指向w的边(单行线)
不考虑重边和自回路
3、
顶点的度:
出度:从该点出发的边数
入度:指向该点的边数
抽象数据类型定义:
1、类型名称:图(Graph)
2、数据对象集:G(V,E)由一个非空的有限顶点集V和一个有限边集合E组成
3、操作集:
图的表示:
邻接矩阵G[N][N](紧密合算)
无向图省空间:用长度为N(N+1)/2的1维数组A存储,Gij在A中对应下标为:(i(i+1)/2+j)
对于网络:将Gij的值定义为边<vi,vj>的权重
有向图:行为出度,列为入度
邻接表(稀疏合算)
G[N]为顶点的指针数组,保存该顶点邻接顶点组成的链表
需要N个指针,2E个结点(每个结点至少两个域)
计算度:
无向图:方便计算
有向图:方便计算出度,需要构建逆邻接表来计算入度