2. 图的结构定义 :
图是由一个 顶点集 V(Vertex) 和
一个边 集 R 构成的数据结构。
Graph = (V , R )
其中, R = {<v,w>| v,w∈ V 且 P(v,w)}
<v,w> 表示从 v 到 w 的一条弧
(Arc) ,并称 v 为弧头 (Head) , w
为弧尾 (Tail) 。
V W
3. 这里的弧为“ 有向边 ” 因此对应图为
有向图 (Digraph) 。
例如 : G1 = (V1, E1)
其中
A
V1={A, B, C, D, E}
B E E1={<A,B>, <A,E>,
C D <B,C>, <C,D>, <D,B>,
<D,A>, <E,C> }
4. 若 <v, w>∈E, 必有 <w, v>∈E,
则称 (v,w) 为顶点 v 和顶点 w 之间存在一
条边 Edge. 无方向的边构成无向图
(Undigraph).
例如 : G2=(V2,VR2) B C
V2={A, B, C, D, E, F}
A D
VR2={(A,B), (A,E),
(B,E), (C,D), (D,F), F E
(B,F), (C,F) }
25. 一、邻接矩阵
0 (i,j)∉VR
定义 : 矩阵的元素为 Aij= { 1 (i,j)∈VR
A B C D E F
B C A
0 1 0 0 1 0
B
1 0 0 0 1 1
C
A D 0 0 0 1 0 1
D
0 0 1 0 0 1
E
F E 1 1 0 0 0 0
F
0 1 1 1 0 0
无向图的邻接矩阵为对称矩阵
26. A B C D E
A A 0 1 0 1 0
B
0 0 1 0 0
B D C
0 0 0 0 1
D
C E 0 0 1 0 0
E
1 1 0 0 0
有向图的邻接矩阵为非对称矩阵
28. 邻接矩阵表示法特点
:
3 )判断两顶点 v 、 u 是否为邻接点:只需
判二维数组对应分量是否为 1 ;
4 )顶点不变,在图中增加、删除边:只需
对二维数组对应分量赋值 1 或清 0 ;
A B C D E
A 0 1 0 1 0 A
B 0 0 1 0 0
C 0
1 0 0 0 1 B D
D 0 0 1 0 0 C E
E 1 1 0 0 0
32. 网络的邻接矩阵
W (i , j ), 若i ≠ j且 < i, j >∈ E或(i, j ) ∈ E
A.edge[i ][ j ] = ∞, 若i ≠ j且 < i, j >∉ E或(i, j ) ∉ E
0, 若i == j
0 15 ∞ 9 ∞
15 A 9 ∞ 0 3 ∞ ∞
11
A.edge =∞ ∞ 0 ∞ 2
B 7 21 D
3 ∞ ∞ 21 0 ∞
C E 11 7 ∞ ∞ 0
2
33. 图的链表表示
l 图的复杂结构使我们考虑用多重链表 . 多重链表
由一个数据域和多个指针域组成的结点表示图中
的一个顶点 , 其中数据域存储顶点的信息 , 指针
域指向其邻接结 . 点但图的结点度数的不一致性
, 可能会导致空间浪费或操作不便 . 实际应用中
, 通常是根据具体的图和需要进行操作 , 设计恰
当的结点结构和表结构 .
l 常用的有邻接表 Adjacentcy List , 邻接多重表
Adjacency Multilist 和十字链表 Orthogonal List 等
结构表示 .
34. 1 2
二、图的邻接表存储表 B C
示 0
3
A D
0 A 1 4
1 B 0 4 5
E 4
5 F
2 C 3 5 同一个顶点发出的边
3 D 2 5 链接在同一个边链表中
,每一个链结点代表一
4 E 0 1 条边 ( 边结点 ), 结点中有
5 F 1 2 3 另一顶点的下标 adjvex
和指针 nextedge 。
35. 有向图的邻接
表 A
0 A 1 4∧
B E 1 B 2∧
C D 2 C 3∧
在有向图的邻接表 3 D 0 1∧
中 , 不易找到指向 4 E 2∧
该顶点的弧。
36. A
有向图的逆邻接
B E
表
在有向图的邻接 C D
表中,对每个顶 0 A 3 ∧
点,链接的是指 3 0 ∧
1 B
向该顶点的弧。
2 C 4 ∧
3 D 2 ∧
4 E 0 ∧
39. 图的结构定义
typedef struct {
AdjList vertices; // 顶点列表
int vexnum, arcnum; // 顶点数和弧数
int kind; // 图的种类标志
} ALGraph;
40. 邻接表表示法特点:
1 )对于无向图 |V|=n,|E|=e. 其邻接表需
要 n 个头结点和 2e 条边 .
2 )顶点 vi 的度:在无向图中等于第 i
个链表中的结点数;在有向图邻接表
中 , 第 i 行的结点数等于顶点 i 的出度
,在有向图逆邻接表中 , 第 i 行的结
点数等于顶点 i 的入度。
41. 邻接表表示法特点:
3 )在邻接表上容易找到任一顶点的第
一个邻接点和下一个邻接点 . 如要判
定任意两个顶点是否相连 , 需搜寻第
i 个或第 j 个链表 .
4 )设存储顶点的一维数组大小为
n( 顶点数 n), G 占用存储空间:
n+e ; G 占用存储空间与它的顶点数
和边数有关;适用于边稀疏的图;