资源描述
第七章 图 试题
一、单项选择题
1. 在无向图中定义顶点得度为与它相关联得( )得数目。
A、 顶点 B、 边 C、 权 D、 权值
2. 在无向图中定义顶点 vi与vj之间得路径为从vi到达vj得一个( )。
A、 顶点序列 B、 边序列 C、 权值总与 D、 边得条数
3. 图得简单路径就是指( )不重复得路径。
A、 权值 B、 顶点 C、 边 D、 边与顶点均
4. 设无向图得顶点个数为n,则该图最多有( )条边。
A、 n1 B、 n(n1)/2 C、 n(n+1)/2 D、 n(n1)
5. n个顶点得连通图至少有( )条边。
A、 n1 B、 n C、 n+1 D、 0
6. 在一个无向图中,所有顶点得度数之与等于所有边数得 ( ) 倍。
A、 3 B、 2 C、 1 D、 1/2
7. 若采用邻接矩阵法存储一个n个顶点得无向图,则该邻接矩阵就是一个 ( )。
A、 上三角矩阵 B、 稀疏矩阵 C、 对角矩阵 D、 对称矩阵
8. 图得深度优先搜索类似于树得( )次序遍历。
A、 先根 B、 中根 C、 后根 D、 层次
9. 图得广度优先搜索类似于树得( )次序遍历。
A、 先根 B、 中根 C、 后根 D、 层次
10. 在用Kruskal算法求解带权连通图得最小(代价)生成树时,通常采用一个( )辅助结构,判断一条边得两个端点就是否在同一个连通分量上。
A、 位向量 B、 堆 C、 并查集 D、 生成树顶点集合
11. 在用Kruskal算法求解带权连通图得最小(代价)生成树时,选择权值最小得边得原则就是该边不能在图中构成( )。
A、 重边 B、 有向环 C、 回路 D、 权值重复得边
12. 在用Dijkstra算法求解带权有向图得最短路径问题时,要求图中每条边所带得权值必须就是( )。
A、 非零 B、 非整 C、 非负 D、 非正
13. 在一个连通图中进行深度优先搜索得到一棵深度优先生成树,树根结点就是关节点得充要条件就是它至少有( )子女。
A、 1 B、 2 C、 3 D、 0
14. 设有向图有n个顶点与e条边,采用邻接表作为其存储表示,在进行拓扑排序时,总得计算时间为( )。
A、 O(nlog2e) B、 O(n+e) C、 O(ne) D、 O(n2)
15. 设有向图有n个顶点与e条边,采用邻接矩阵作为其存储表示,在进行拓扑排序时,总得计算时间为( )。
A、 O(nlog2e) B、 O(n+e) C、 O(ne) D、 O(n2)
16. 设G1 = (V1, E1) 与G2 = (V2, E2) 为两个图,如果V1 Í V2,E1 Í E2,则称( )。
A、 G1就是G2得子图 B、 G2就是G1得子图
C、 G1就是G2得连通分量 D、 G2就是G1得连通分量
17. 有向图得一个顶点得度为该顶点得( )。
A、 入度 B、 出度
C、 入度与出度之与 D、 (入度﹢出度))/2
18. 一个连通图得生成树就是包含图中所有顶点得一个( )子图。
A、 极小 B、 连通 C、 极小连通 D、 无环
19. n (n>1) 个顶点得强连通图中至少含有( )条有向边。
A、 n1 B、 n n(n1)/2 D、 n(n1)
20. 在一个带权连通图G中,权值最小得边一定包含在G得( )生成树中。
A、 某个最小 B、 任何最小 C、 广度优先 D、深度优先
21. 对于具有e条边得无向图,它得邻接表中有( )个边结点。
A、 e1 B、 e C、 2(e1) D、 2e
22. 对于如图所示得带权有向图,从顶点1到顶点5得最短路径为( )。
A、1, 4, 5 B、 1, 2, 3, 5 C、 1, 4, 3, 5 D、 1, 2, 4, 3, 5
1
2
61
3
81
9
5
5
4
1
2
3
23. 具有n个顶点得有向无环图最多可包含( )条有向边。
A、 n1 B、 n C、 n(n1)/2 D、n(n1)
24. 一个有n个顶点与n条边得无向图一定就是( )。
A、 连通得 B、 不连通得 C、 无环得 D、 有环得
25. 在n个顶点得有向无环图得邻接矩阵中至少有( )个零元素。
A、 n B、 n(n1)/2 C、 n(n+1)/2 D、 n(n1)
26. 对于有向图,其邻接矩阵表示比邻接表表示更易于( )。
A、 求一个顶点得度 B、 求一个顶点得邻接点
C、 进行图得深度优先遍历 D、 进行图得广度优先遍历
27. 在一个有向图得邻接矩阵表示中,删除一条边<vi, vj>需要耗费得时间就是( )。
A、 O(1) B、 O(i) C、 O(j) D、 O(i+j)
28. 与邻接矩阵相比,邻接表更适合于存储( )图。
A、 无向 B、连通 C、稀疏 D、 稠密图
29. 设一个有n个顶点与e条边得有向图采用邻接矩阵表示,要计算某个顶点得出度所耗费得时间就是( )。
A、 O(n) B、 O(e) C、 O(n+e) D、 O(n2)
30. 为了实现图得广度优先遍历,BFS算法使用得一个辅助数据结构就是( )。
A、 栈 B、 队列 C、 二叉树 D、 树
参考答案: 1、 B 2、 A 3、 B 4、 B 5、 A
6、 B 7、 D 8、 A 9、 D 10、 C
11、C 12、 C 13、 B 14、 B 15、 D
16、 A 17、 C 18、 C 19、 B 20、 A
21、 D 22、 D 23、 C 24、 D 25、 C
26、 A 27、 A 28、 C 29、 A 30、 B
二、填空题
1. 图得定义包含一个顶点集合与一个边集合。其中,顶点集合就是一个有穷________集合。
2. 用邻接矩阵存储图,占用存储空间数与图中顶点个数________关,与边数________关。
3. n (n﹥0) 个顶点得无向图最多有________条边,最少有________条边。
4. n (n﹥0) 个顶点得连通无向图最少有________条边。
5. 若3个顶点得图G得邻接矩阵为,则图G一定就是________向图。
6. n (n﹥0) 个顶点得连通无向图各顶点得度之与最少为________。
7. 设图G = (V, E),V = {V0, V1, V2, V3}, E = {(V0, V1), (V0, V2), (V0, V3), (V1, V3)},则从顶点V0开始得图G得不同深度优先序列有________种,例如______________。
8. 设图G = (V, E),V = {P, Q, R, S, T}, E = {<P, Q>, <P, R>, <Q, S>, <R, T>},从顶点P出发,对图G进行广度优先搜索所得得所有序列为__________与___________。
9. n (n﹥0) 个顶点得无向图中顶点得度得最大值为________。
10. 在重连通图中每个顶点得度至少为________。
11. 在非重连通图中进行深度优先搜索,则深度优先生成树得根为关节点得充要条件就是它至少有________个子女。
12. (n﹥0) 个顶点得连通无向图得生成树至少有________条边。
13. 101个顶点得连通网络N有100条边,其中权值为1, 2, 3, 4, 5, 6, 7, 8, 9, 10得边各10条,则网络N得最小生成树各边得权值之与为_________。
14. 在使用Kruskal算法构造连通网络得最小生成树时,只有当一条候选边得两个端点不在同一个________上,才有可能加入到生成树中。
15. 深度优先生成树得高度比广度优先生成树得高度________。
16. 求解带权连通图最小生成树得Prim算法适合于________图得情形,而Kruskal算法适合于________图得情形。
17. 求解最短路径得Dijkstra算法适用于各边上得权值________得情形。若设图得顶点数为n,则该算法得时间复杂度为________。
18. 若对一个有向无环图进行拓扑排序,再对排在拓扑有序序列中得所有顶点按其先后次序重新编号,则在相应得邻接矩阵中所有________元素将集中到对角线以上。
参考答案: 1、 非空 2、 有, 无 3、 n(n1)/2, 0
4、 n1 5、 有 6、 2(n1)
7、 4,V0V1V3V2(或V0V2V1V3, V0V2V3V1, V0V3V1V2)
8、 PQRST与PRQTS 9、 n1 10、 2
11、 2 12、 n1 13、 550
14、 连通分量 15、 高 16、 稠密,稀疏
17、 非负,O(n2) 18、 非零(或值为1得)
三、判断题
1. 一个图得子图可以就是空图,顶点个数为0。
2. 存储图得邻接矩阵中,矩阵元素个数不但与图得顶点个数有关,而且与图得边数也有关。
3. 一个有1000个顶点与1000条边得有向图得邻接矩阵就是一个稀疏矩阵。
4. 对一个连通图进行一次深度优先搜索(depth first search)可以遍访图中得所有顶点。
5. 有n (n≥1) 个顶点得无向连通图最少有n1条边。
6. 有n (n≥1) 个顶点得有向强连通图最少有n条边。
7. 图中各个顶点得编号就是人为得,不就是它本身固有得,因此可以因为某种需要改变顶点得编号。
8. 如果无向图中各个顶点得度都大于2,则该图中必有回路。
9. 如果有向图中各个顶点得度都大于2,则该图中必有回路。
10. 图得深度优先搜索(depth first search)就是一种典型得回溯搜索得例子,可以通过递归算法求解。
11. 图得广度优先搜索(breadth first search)算法不就是递归算法。
12. 有n个顶点、e条边得带权有向图得最小生成树一般由n个顶点与n1条边组成。
13. 对于一个边上权值任意得带权有向图,使用Dijkstra算法可以求一个顶点到其它各个顶点得最短路径。
14. 对一个有向图进行拓扑排序(topological sorting),一定可以将图得所有顶点按其关键码大小排列到一个拓扑有序得序列中。
15. 有回路得有向图不能完成拓扑排序。
16. 对任何用顶点表示活动得网络(AOV网)进行拓扑排序得结果都就是唯一得。
17. 用边表示活动得网络(AOE网)得关键路径就是指从源点到终点得路径长度最长得路径。
18. 对于AOE网络,加速任一关键活动就能使整个工程提前完成。
19. 对于AOE网络,任一关键活动延迟将导致整个工程延迟完成。
20. 在AOE网络中,可能同时存在几条关键路径,称所有关键路径都需通过得有向边为桥。如果加速这样得桥上得关键活动就能使整个工程提前完成。
21. 用邻接矩阵存储一个图时,在不考虑压缩存储得情况下,所占用得存储空间大小只与图中得顶点个数有关,而与图得边数无关。
22. 邻接表只能用于有向图得存储,邻接矩阵对于有向图与无向图得存储都适用。
23. 邻接矩阵只适用于稠密图(边数接近于顶点数得平方),邻接表适用于稀疏图(边数远小于顶点数得平方)
24. 存储无向图得邻接矩阵就是对称得,因此只要存储邻接矩阵得下(上)三角部分就可以了。
25. 连通分量就是无向图中得极小连通子图。
26. 强连通分量就是有向图中得极大强连通子图。
27. 在AOE网络中一定只有一条关键路径。
参考答案: 1、 否 2、 否 3、 就是 4、 就是 5、 就是
6、 否 7、 就是 8、 就是 9、 否 10、 就是
11、 就是 12、 否 13、 否 14、 否 15、 就是
16、 否 17、 就是 18、 否 19、 就是 20、 就是
21、 就是 22、 否 23、 就是 24、 就是 25、 否
26、 就是 27、 否
四、运算题
V0
V1
V2
V5
V4
V3
V6
V7
V8
1. 设连通图G如图所示。试画出该图对应得邻接矩阵表示,并给出对它执行从顶点V0开始得广度优先搜索得结果。
V0
V1
V2
V5
V4
V3
V6
V7
V8
2. 设连通图G如图所示。试画出该图及其对应得邻接表表示,并给出对它执行从V0开始得深度优先搜索得结果。
V0
V1
V2
V5
V4
V3
V6
V7
V8
3. 设连通图G如图所示。试画出从顶点V0出发得深度优先生成树,指出图G中哪几个顶点就是关节点(即万一它失效则通信网络将发生故障)。
⑩
①
②
③
④
⑤
⑥
⑦
⑧
⑨
4. 设连通图G如图所示,
(1) 如果有关节点,请找出所有得关节点。
(2) 如果想把该连通图变成重连通图,至少在图中加几条边?如何加?
5. 对于如图所示得有向图,试写出:
(1) 从顶点①出发进行深度优先搜索所得到得深度优先生成树;
(2) 从顶点②出发进行广度优先搜索所得到得广度优先生成树
①
②
③
④
⑤
V1
V2
V3
V4
V7
V6
V0
V5
6. 设有向图G如图所示。试画出从顶点V0开始进行深度优先搜索与广度优先搜索得到得DFS生成森林与BFS生成森林。
7. 表示图得另一种方法就是使用关联矩阵INC[ ][ ]。其中,一行对应于一个顶点,一列对应于一条边。因此,如果边j依附于顶点i,则INC[i][j]=1。如果ADJ就是图G =(V, E)得邻接矩阵,INC就是关联矩阵,试说明在什么条件下将有ADJ = INC´INCT-I,其中,INCT就是矩阵INC得转置矩阵,I就是单位矩阵。两个n´n得矩阵得乘积C = A´B定义为
公式中得 定义为按位加, 定义为按位乘。
设无向图G如图所示。试画出该图得邻接矩阵与关联矩阵。
0
1
2
3
4
5
6
7
e0
e1
e2
e3
e4
e5
e7
e6
e8
e9
0
1
2
3
4
5
6
6
1
8
7
5
3
4
2
6
8. 设有一个连通网络如图所示。试按如下格式,应用Kruskal算法给出在构造最小生成树过程中顺序选出得各条边。
( 始顶点号,终顶点号, 权值 )
( , , )
( , , )
( , , )
( , , )
( , , )
9. 设有一个连通网络如图所示。试采用prim算法从顶点0开始构造最小生成树。(写出加入生成树顶点集合S与选择边Edge得顺序)
1
2
3
4
6
5
0
9
10
7
5
11
8
7
S:
顶点号
Edge:
(顶点,顶点,权值)
0
( , , )
0
( , , )
0
( , , )
0
( , , )
0
( , , )
0
10. 计算连通网得最小生成树得Dijkstra算法可简述如下:将连通网所有得边以方便得次序逐条加入到初始为空得生成树得边集合T中。每次选择并加入一条边时,需要判断它就是否会与先前加入T中得边构成回路。如果构成了回路,则从这个回路中将权值最大得边退选。如果以邻接矩阵作为连通网得存储结构(仅使用矩阵得上三角部分),并在邻接矩阵得下三角部分记录最小生成树得边信息。试以如下所示得图G为例,画出构造出最小生成树及其邻接矩阵,并在括号内填入每次选择得边与可能去掉得边。
26
21
11
①
②
⑤
④
③
⑥
18
14
16
19
9
5
6
选 择 得 边
去 掉 得 边
(顶点,
顶点,
权值)
(顶点,
顶点,
权值)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
( ,
,
)
11. 有八项活动, 每项活动要求得前驱如下:
活动
A0
A1
A2
A3
A4
A5
A6
A7
前驱
无前驱
A0
A0
A0, A2
A1
A2, A4
A3
A5, A6
(1) 试画出相应得AOV网络, 并给出一个拓扑排序序列。
(2) 试改变某些结点得编号, 使得用邻接矩阵表示该网络时所有对角线以下得元素全为0。
12. 试对下图所示得AOE网络
(1) 这个工程最早可能在什么时间结束。
(2) 确定哪些活动就是关键活动。画出由所有关键活动构成得图,指出哪些活动加速可使整个工程提前完成。
1
11
15
19
10
2
2
3
4
4
5
5
6
6
13. 设带权有向图如图所示。试采用Dijkstra算法求从顶点0到其她各顶点得最短路径与最短路径长度。
7
1
8
2
4
4
5
9
1
2
3
4
0
14. 一项工程由六个子工程p1, p2, ¼, p6组成。这些子工程之间有下列关系:p1 < p2, p3 < p6, p4 < p3, p2 < p6, p4 < p5, p1 < p3, p5 < p6。符号“<”表示“领先于”得关系。例如,p2 < p6表示p2完成后p6才能开始。试给出该工程得三种可能得施工顺序。
15. 设一有向图如下所示,请问该有向图就是否为强连通图,并画出该有向图所有得强连通分量。
g
f
e
c
a
b
d
参考答案:
1. 图G对应得邻接矩阵为
执行广度优先搜索得结果为V0V1V3V2V4V7V6V5V8,搜索结果不唯一。
2. 图G对应得邻接表为:
3
1
3
2
0
3
1
0
3
5
0
1
2
6
7
6
6
2
1
3
7
8
0 V0
1 V1
2 V2
3 V3
4 V4
5 V5
6 V6
7 V7
8 V8
∧
∧
∧
∧
∧
∧
∧
∧
∧
执行深度优先搜索得结果为:V0V1V4V3V6V7V8V2V5,搜索结果不唯一。
3. 图GV0
V1
V2
V5
V4
V3
V6
V7
V8
中,从V0出发得深度优先生成树为:
图G中得关节点为:V1, V2, V3, V6。
4. (1) 关节点为 ①, ②, ③, ⑦, ⑧
(2) 至少加四条边 (1, 10), (3, 4), (4, 5), (5, 6)。从 ③ 得子孙结点⑩到③得祖先结点①引一条边,从 ② 得子孙结点 ④ 到根 ① 得另一分支 ③ 引一条边,并将 ⑦ 得子孙结点 ⑤、⑥ 与结点 ④ 连结起来,可使其变为重连通图。(解答不唯一)
⑩
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5. 以顶点 ① 为根得深度优先生成树(不唯一):
①
②
③
④
⑤
①
②
③
④
⑤
以顶点 ② 为根得广度优先生成树:
①
②
③
④
⑤
V1
V2
V3
V4
V7
V6
V0
V5
6. 深度优先生成森林为:
V1
V2
V3
V4
V7
V6
V0
V5
广度优先生成森林为:
7. 当图中得顶点个数等于边得条数时,ADJ = INC*INCTI成立。
图G对应得邻接矩阵为:
对应得关联矩阵为:
8. 应用Kruskal算法顺序选出最小生成树得各条边为:
0
1
2
3
4
5
1
5
3
4
2
( 始顶点号,终顶点号, 权值 )
( 0, 3, 1 )
( 2, 5, 2 )
( 1, 4, 3 )
( 3, 5, 4 )
( 3, 4, 5 )
9. 采用prim算法从顶点0开始构造最小生成树得过程:
S:
顶点号
Edge:
(顶点,顶点,权值)
0
( 0, 1, 9 )
0, 1
( 1, 3, 5 )
0, 1, 3
( 1, 2, 7 )
0, 1, 3, 2
( 2, 4, 6 )
0, 1, 3, 2, 4
( 2, 5, 7 )
0, 1, 3, 2, 4, 5
1
2
3
4
6
5
0
9
7
5
7
10. 最小生成树及其邻接矩阵如图所示
①
②
⑤
④
③
⑥
14
16
5
6
11
选 择 得 边
去 掉 得 边
(顶点,
顶点,
权值)
(顶点,
顶点,
权值)
( 2 ,
1 ,
16 )
( ,
,
)
( 5 ,
1 ,
14 )
( ,
,
)
( 6 ,
1 ,
21 )
( ,
,
)
( 6 ,
2 ,
19 )
( 6 ,
1 ,
21 )
( 6 ,
4 ,
11 )
( ,
,
)
( 6 ,
5 ,
26 )
( 6 ,
5 ,
26 )
( 5 ,
4 ,
18 )
( 6 ,
2 ,
19 )
( 4 ,
2 ,
9 )
( 5 ,
4 ,
18 )
( 3 ,
2 ,
5 )
( ,
,
)
( 4 ,
3 ,
6 )
( 4 ,
2 ,
9 )
选择顺序不唯一。
11. 相应得AOV网络为:
A0
A1
A2
A3
A4
A5
A6
A7
一个拓扑排序序列为:A0,A1,A4,A2,A5,A3,A6,A7。 注意:拓扑排序结果不唯一。
按拓扑有序得次序对所有顶点从新编号:
原编号
A0
A1
A4
A2
A5
A3
A6
A7
新编号
A0
A1
A2
A3
A4
A5
A6
A7
A0
A1
A3
A5
A2
A4
A6
A7
相应邻接矩阵为:
12. 针对下图所示得AOE网络
1
11
15
19
10
2
2
3
4
4
5
5
6
6
各顶点(事件)得最早可能开始时间Ve(i)与最迟允许开始时间Vl(i)参瞧下表:
顶点
1
2
3
4
5
6
Ve
0
19
15
29
38
43
Vl
0
19
15
37
38
43
各边(活动)得最早可能开始时间Ee(k)与最迟允许开始时间El(k)参瞧下表:
边
<1,2>
<1,3>
<3,2>
<2,5>
<3,5>
<2,4>
<4,6>
<5,6>
Ee
0
0
15
19
15
19
29
38
El
17
0
15
19
27
27
37
38
如果活动k得最早可能开始时间Ee(k) 与最迟允许开始时间El(k)相等,则该活动就是关键活动。本题得关键活动为<1,3>, <3,2>, <2,5>, <5,6>,它们组成关键路径。这些关键活动中任一个提前完成,整个工程就能提前完成。
整个工程最早在43天完成。由关键活动组成得AOV网络如图所示。
1
11
15
19
10
2
2
3
4
4
5
5
6
6
7
1
8
2
4
4
5
9
1
2
3
4
0
13. 带权有向图如图所示:
应用Dijkstra算法求从顶点V0到其她各顶点得最短路径Path与最短路径长度Len得步骤如下:
步骤
V0
V1
V2
V3
V4
动作
Path
Len
Path
Len
Path
Len
Path
Len
1
V0V1
4
—
∞
V0V3
7
—
∞
选V0V1
V0V1
4
V0V1V2
8
V0V3
7
—
∞
参照V1调整
2
V0V1
4
V0V1V2
8
V0V3
7
—
∞
选V0V3
V0V1
4
V0V1V2
8
V0V3
7
V0V3V4
12
参照V3调整
3
V0V1
4
V0V1V2
8
V0V3
7
V0V3V4
12
选V0V1V2
V0V1
4
V0V1V2
8
V0V3
7
V0V1V2V4
10
参照V2调整
4
V0V1
4
V0V1V2
8
V0V3
7
V0V1V2V4
10
选V0V1V2V4
p1
p2
p6
p4
p5
p3
14. 图G为
可能得施工顺序有:
p1, p2, p4, p3, p5, p6
p1, p4, p2, p3, p5, p6
p4, p5, p1, p3, p2, p6
15. 该图得强连通分量分别为:
e
c
a
b
g
f
d
五、算法分析题
1. 已知有向图得邻接矩阵表示及其一个算法描述如下:
A =
0 1 1 1 1
0 0 1 0 0
0 0 0 1 1
1 1 0 0 0
0 0 1 1 0
const int MaxVertices = 5;
struct Graph { //图得邻接矩阵表示
int Edge[MaxVertices][MaxVertices]; //有向图邻接距阵
int CurrentNode; //有向图当前结点数
int CurrentEdges; //当前边数
}
int unknown ( int i ) {
int d = 0;
for ( int j = 0; j < CurrentNode; j++) {
if ( Edge[i][j] != 0 ) d++;
if ( Edge[j][i] != 0 ) d++;
}
return d;
}
(1) 若定义图得一个对象Graph G,则执行操作G、unknown (3) 后得返回值就是多少?
(2) 试说明该算法得功能及时间复杂度。
2. 已知有向图得邻接矩阵表示及其一个操作算法描述如下:
A =
0 1 1 0 1
0 0 0 0 0
0 0 0 1 1
1 1 0 0 0
0 0 0 1 0
const int MaxVertices = 5;
struct Graph { //图得邻接矩阵表示
int Edge[MaxVertices][MaxVertices]; //有向图邻接距阵
int CurrentNode; //有向图当前结点数
int CurrentEdges; //当前边数
}
void unknown ( int i ) {
int d, j;
d = 0;
for ( j = 0; j < CurrentNode; j++ ) {
if ( Edge[i][j] ) { d++; Edge[i][j] = 0; }
if ( Edge[j][i] ) { d++; Edge[j][i] = 0; }
}
CurrentEdges = d;
}
若定义图得一个对象Graph G,试写出执行操作G、unknown (3) 后该图得邻接矩阵,并说明该算法得功能。
3. 已知有向图得邻接表类得表示得形式描述如下:
struct Edge { //邻接表中边结点得定义
int dest; //邻接得结点
float cost; //边得权值
Edge * link;
};
template <class Type> struct Vertex { //邻接表中顶点得定义
Type data;
Edge *adj;
};
template <class Type> struct Graph { //邻接表
Vertex<Type> * NodeTable; //顶点表
int NumVertices; //当前顶点个数
int NumEdges; //当前边数
int Degree[MaxVertices]; //各个顶点得度得记录数组
}
//下列算法就是计算有向图中各个顶点得度,并保存在数组Degree[ ]中。请在 处
//填入合适得内容,使其成为一个完整得算法。
void FindDegree ( ) {
int i; Edge * p = NULL;
for ( i = 0; i < NumVertices; i++ ) Degree[i] = (1) ;
for ( i = 0; i < NumVertices; i++)
for ( p = NodeTable[i]、adj; p != NULL; p = p>link ) {
(2) ;
(3) ;
}
};
4. 已知有向图得邻接表类得表示得形式描述如下:
struct Edge { //邻接表中边结点得定义
int dest; //邻接得结点
float cost; //边得权值
Edge * link;
};
template <class Type> struct Vertex { //邻接表中顶点得定义
Type data;
Edge *adj;
};
template <class Type> struct Graph { //邻接表
Vertex<Type> * NodeTable; //顶点表
int NumVertices; //当前顶点个数
int NumEdges; //当前边数
int Degree[MaxVertices]; //各个顶点得度得记录数组
}
//下列算法就是计算有向图G中一个顶点vi得入度。请在 处填入合适得内容,
//使其成为一个完整得算法。
void FindDegree ( int i ) {
int deg, j; Edge * p = NULL;
deg = 0;
for ( j = 0; j < NumVertices; j++ ) {
p = NodeTable[j]、adj;
while ( (1) ) {
p = p>link;
if ( p == NULL ) break;
}
if ( p != NULL ) (2) ;
}
展开阅读全文