第七章 图

更新时间:2024-03-05 18:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第七章 图

一、选择题

1.图中有关路径的定义是( )。【北方交通大学 2001 一、24 (2分)】

A.由顶点和相邻顶点序偶构成的边所形成的序列 B.由不同顶点所形成的序列 C.由不同边所形成的序列 D.上述定义都不是 2.设无向图的顶点个数为n,则该图最多有( )条边。

2

A.n-1 B.n(n-1)/2 C. n(n+1)/2 D.0 E.n 【清华大学 1998 一、5 (2分)】【西安电子科技大 1998 一、6 (2分)】 【北京航空航天大学 1999 一、7 (2分)】

3.一个n个顶点的连通无向图,其边的个数至少为( )。【浙江大学 1999 四、4 (4分)】

A.n-1 B.n C.n+1 D.nlogn; 4.要连通具有n个顶点的有向图,至少需要( )条边。【北京航空航天大学 2000 一、6(2分)】

A.n-l B.n C.n+l D.2n 5.n个结点的完全有向图含有边的数目( )。【中山大学 1998 二、9 (2分)】

A.n*n B.n(n+1) C.n/2 D.n*(n-l)

6.一个有n个结点的图,最少有( )个连通分量,最多有( )个连通分量。

A.0 B.1 C.n-1 D.n 【北京邮电大学 2000 二、5 (20/8分)】

7.在一个无向图中,所有顶点的度数之和等于所有边数( )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。【哈尔滨工业大学 2001 二、3 (2分)】

A.1/2 B.2 C.1 D.4 8.用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为( )。【中山大学1999一、14】

A.5 B.6 C.8 D.9 9.用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。

A.逆拓扑有序 B.拓扑有序 C.无序的 【中科院软件所 1998】 10.下面结构中最适于表示稀疏无向图的是( ),适于表示稀疏有向图的是( )。

A.邻接矩阵 B.逆邻接表 C.邻接多重表 D.十字链表 E.邻接表 【北京工业大学 2001 一、3 (2分)】

11.下列哪一种图的邻接矩阵是对称矩阵?( )【北方交通大学 2001 一、11 (2分)】

A.有向图 B.无向图 C.AOV网 D.AOE网

?0A???1??01010?1??0??可以看出,该图共有(①)个顶点;如果是有向图该图共有(②) 条

12. 从邻接阵矩

弧;如果是无向图,则共有(③)条边。【中科院软件所 1999 六、2(3分)】

①.A.9 B.3 C.6 D.1 E.以上答案均不正确 ②.A.5 B.4 C.3 D.2 E.以上答案均不正确 ③.A.5 B.4 C.3 D.2 E.以上答案均不正确 13.当一个有N个顶点的图用邻接矩阵A表示时,顶点Vi的度是( )。【南京理工大学1998一、4(2分)】

A.

?A[i,j]i?1n B.

?A?i,j?j?1n C.

?A[j,i]i?1n D.

?A[i,j]?A?j,i?i?1nn+

j?1

14.用相邻矩阵A表示图,判定任意两个顶点Vi和Vj之间是否有长度为m 的路径相连,则只要检查( )的第i行第j列的元素是否为零即可。【武汉大学 2000 二、7】

m

A.mA B.A C.A D.Am-1 15. 下列说法不正确的是( )。【青岛大学 2002 二、9 (2分)】

A.图的遍历是从给定的源点出发每一个顶点仅被访问一次 C.图的深度遍历不适用于有向图 B.遍历的基本算法有两种:深度遍历和广度遍历 D.图的深度遍历是一个递归过程 16.无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是( )。【南京理工大学 2001 一、14 (1.5分)】

A.a,b,e,c,d,f B.a,c,f,e,b,d C.a,e,b,c,f,d D.a,e,d,f,c,b 17. 设图如右所示,在下面的5个序列中,符合深度优先遍历的序列有多少?( )

【南京理工大学 2000 一、20 (1.5分)】

a e b d f c a c f d e b a e d f c b a e f d c b a e f d b c A.5个 B.4个 C.3个 D.2个 a

bec

df

第17题图 第18题图 18.下图中给出由7个顶点组成的无向图。从顶点1出发,对它进行深度优先遍历得到的序列是( ① ),而进行广度优先遍历得到的顶点序列是( ② )。【中科院软件所 1999 六、2-(1)(2分)】

①.A.1354267 B.1347652 C.1534276 D.1247653 E.以上答案均不正确 ②.A.1534267 B.1726453 C.l354276 D.1247653 E.以上答案均不正确 19.下面哪一方法可以判断出一个有向图是否有环(回路):【东北大学 2000 4、2(4分)】

A.深度优先遍历 B. 拓扑排序 C. 求最短路径 D. 求关键路径

20. 在图采用邻接表存储时,求最小生成树的 Prim 算法的时间复杂度为( )。

23

A. O(n) B. O(n+e) C. O(n) D. O(n) 【合肥工业大学 2001 一、2 (2分)】

21. 下面是求连通网的最小生成树的prim算法:集合VT,ET分别放顶点和边,初始为( 1 ),下面步骤重复n-1次: a:( 2 );b:( 3 );最后:( 4 )。【南京理工大学 1997 一、11_14 (8分)】

(1).A.VT,ET为空 B.VT为所有顶点,ET为空 C.VT为网中任意一点,ET为空 D.VT为空,ET为网中所有边

(2).A. 选i属于VT,j不属于VT,且(i,j)上的权最小 B.选i属于VT,j不属于VT,且(i,j)上的权最大 C.选i不属于VT,j不属于VT,且(i,j)上的权最小

D.选i不属于VT,j不属于VT,且(i,j)上的权最大

(3).A.顶点i加入VT,(i,j)加入ET B. 顶点j加入VT,(i,j)加入ET C. 顶点j加入VT,(i,j)从ET中删去 D.顶点i,j加入VT,(i,j)加入ET

(4).A.ET 中为最小生成树 B.不在ET中的边构成最小生成树

C.ET中有n-1条边时为生成树,否则无解 D.ET中无回路时,为生成树,否则无解 22. (1). 求从指定源点到其余各顶点的迪杰斯特拉(Dijkstra)最短路径算法中弧上权不能为负的原因是在实际应用中无意义;

3

(2). 利用Dijkstra求每一对不同顶点之间的最短路径的算法时间是O(n ) ;(图用邻接矩阵表示)

(3). Floyd求每对不同顶点对的算法中允许弧上的权为负,但不能有权和为负的回路。 上面不正确的是( )。【南京理工大学 2000 一、21 (1.5分)】

A.(1),(2),(3) B.(1) C.(1),(3) D.(2),(3) 23.当各边上的权值( )时,BFS算法可用来解决单源最短路径问题。【中科院计算所2000一、3 (2分)】

A.均相等 B.均互不相等 C.不一定相等 24. 求解最短路径的Floyd算法的时间复杂度为( )。【合肥工业大学 1999 一、2 (2分)】

A.O(n) B. O(n+c) C. O(n*n) D. O(n*n*n) 25.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},

E={,,,,,,,,},G的拓扑序列是( )。

A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7 C.V1,V3,V4,V5,V2,V6,V7 D.V1,V2,V5,V3,V4,V6,V7 【北京航空航天大学 2000 一、7 (2分)】

26.若一个有向图的邻接距阵中,主对角线以下的元素均为零,则该图的拓扑有序序列( )。

A.存在 B.不存在【中科院计算所1998 二、6 (2分)】【中国科技大学 1998二、6(2分)】 27.一个有向无环图的拓扑排序序列( )是唯一的。【北京邮电大学 2001 一、3 (2分)】

A.一定 B.不一定

28. 在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是( )。

A.G中有弧 B.G中有一条从Vi到Vj的路径 C.G中没有弧 D.G中有一条从Vj到Vi的路径 【南京理工大学 2000 一、9 (1.5分)】

29. 在用邻接表表示图时,拓扑排序算法时间复杂度为( )。

A. O(n) B. O(n+e) C. O(n*n) D. O(n*n*n) 【合肥工业大学 2000 一、2 (2分)】【南京理工大学 2001 一、9 (1.5分)】 【青岛大学 2002 二、3 (2分)】 30. 关键路径是事件结点网络中( )。【西安电子科技大学 2001应用 一、4 (2分)】

A.从源点到汇点的最长路径 B.从源点到汇点的最短路径 C.最长回路 D.最短回路 31. 下面关于求关键路径的说法不正确的是( )。【南京理工大学 1998 一、12 (2分)】 A.求关键路径是以拓扑排序为基础的

B.一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同

C.一个事件的最迟开始时间为以该事件为尾的弧的活动最迟开始时间与该活动的持续时间的差 D.关键活动一定位于关键路径上

32.下列关于AOE网的叙述中,不正确的是( )。

A.关键活动不按期完成就会影响整个工程的完成时间

B.任何一个关键活动提前完成,那么整个工程将会提前完成 C.所有的关键活动提前完成,那么整个工程将会提前完成 D.某些关键活动提前完成,那么整个工程将会提前完成 【北方交通大学 1999 一、7 (3分)】【北京工业大学 1999 一、1 (2分)】

二、判断题

1.树中的结点和图中的顶点就是指数据结构中的数据元素。( )【青岛大学 2001 四、1 (1分)】 2.在n个结点的无向图中,若边数大于n-1,则该图必是连通图。( )【中科院软件所1997一、4(1分)】

3.对有n个顶点的无向图,其边数e与各顶点度数间满足下列等式e=

?TD(Vi)i?1n。( )

【南京航空航天大学 1996 六、4 (1分)】 4. 有e条边的无向图,在邻接表中有e个结点。( )【南京理工大学 1998 二、5 (2分)】 5. 有向图中顶点V的度等于其邻接矩阵中第V行中的1的个数。( )【合肥工业大学2001二、7(1分)】

6.强连通图的各顶点间均可达。( )【北京邮电大学 2000 一、3 (1分)】 7.强连通分量是无向图的极大强连通子图。( )【北京邮电大学 2002 一、7 (1分)】 8.连通分量指的是有向图中的极大连通子图。( )【燕山大学 1998 二、4 (2分)】 9.邻接多重表是无向图和有向图的链式存储结构。( )【南京航空航天大学 1995 五、5 (1分)】 10. 十字链表是无向图的一种存储结构。( )【青岛大学 2001 四、7 (1分)】 11. 无向图的邻接矩阵可用一维数组存储。( )【青岛大学 2000 四、5 (1分)】 12.用邻接矩阵法存储一个图所需的存储单元数目与图的边数有关。( )

【东南大学 2001 一、4 (1分)】 【中山大学 1994 一、3 (2分)】

13.有n个顶点的无向图, 采用邻接矩阵表示, 图中的边数等于邻接矩阵中非零元素之和的一半。( )

【北京邮电大学 1998 一、5 (2分)】 14. 有向图的邻接矩阵是对称的。( )【青岛大学 2001 四、6 (1分)】 15.无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵。( )

【东南大学 2001 一、3 (1分)】【哈尔滨工业大学 1999 三、4】

16. 邻接矩阵适用于有向图和无向图的存储,但不能存储带权的有向图和无向图,而只能使用邻接表存储形式来存储它。( )【上海海运学院 1995 一、9(1分) 1997 一、8(1分) 1998 一、9(1分)】

17. 用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小与图中结点个数有关,而与图的边数无关。( )【上海海运学院 1996 一、8 (1分) 1999 一、9 (1分)】 18.一个有向图的邻接表和逆邻接表中结点的个数可能不等。( )【上海交通大学 1998 一、12】 19.需要借助于一个队列来实现DFS算法。( )【南京航空航天大学 1996 六、8 (1分)】 20. 广度遍历生成树描述了从起点到各顶点的最短路径。( )【合肥工业大学 2001 二、8 (1分)】 21.任何无向图都存在生成树。( )【北京邮电大学 2000 一、1 (1分)】 22. 不同的求最小生成树的方法最后得到的生成树是相同的.( )【南京理工大学 1998 二、3 (2

分)】

23.带权无向图的最小生成树必是唯一的。( )【南京航空航天大学 1996 六、7 (1分)】 24. 最小代价生成树是唯一的。( )【山东大学 2001 一、5 (1分)】 25.一个网(带权图)都有唯一的最小生成树。( )【大连海事大学 2001 一、14 (1分)】 26.连通图上各边权值均不相同,则该图的最小生成树是唯一的。( )【哈尔滨工业大学 1999 三、3】

27.带权的连通无向图的最小(代价)生成树(支撑树)是唯一的。( )【中山大学 1994 一、10(2分)】

28. 最小生成树的KRUSKAL算法是一种贪心法(GREEDY)。( )【华南理工大学 2002 一、6(1分)】 29. 求最小生成树的普里姆(Prim)算法中边上的权可正可负。( )【南京理工大学 1998 二、2 (2分)】

30.带权的连通无向图的最小代价生成树是唯一的。( )【东南大学 2001 一、5(1分)】 31. 最小生成树问题是构造连通网的最小代价生成树。( )【青岛大学 2001 四、10(1分)】 32. 在图G的最小生成树G1中,可能会有某条边的权值超过未选边的权值。( )

【合肥工业大学 2000 二、7(1分)】

k-1k

33. 在用Floyd 算法求解各顶点的最短路径时,每个表示两点间路径的path[I,J]一定是path [I,J]的子集(k=1,2,3,?,n)。( )【合肥工业大学 2000 二、6 (1分)】 34.拓扑排序算法把一个无向图中的顶点排成一个有序序列。( )【南京航空航天大学1995五、8(1分)】

35.拓扑排序算法仅能适用于有向无环图。( )【南京航空航天大学 1997 一、7 (1分)】 36. 无环有向图才能进行拓扑排序。( )【青岛大学 2002 一、7 (1分)2001 一、8 (1分)】 37. 有环图也能进行拓扑排序。( )【青岛大学 2000 四、6 (1分)】 38.拓扑排序的有向图中,最多存在一条环路。( )【大连海事大学 2001 一、6(1分)】 39.任何有向图的结点都可以排成拓扑排序,而且拓扑序列不唯一。( )【上海交通大学1998 一、13】

40. 既使有向无环图的拓扑序列唯一,也不能唯一确定该图。( )【合肥工业大学 2001 二、6(1分)】

41.若一个有向图的邻接矩阵对角线以下元素均为零,则该图的拓扑有序序列必定存在。( )

【中科院软件所 1997 一、5 (1分)】 42.AOV网的含义是以边表示活动的网。( )【南京航空航天大学 1995 五、7 (1分)】 43.对一个AOV网,从源点到终点的路径最长的路径称作关键路径。【南京航空航天大学1995五、9(1分)】

44. 关键路径是AOE网中从源点到终点的最长路径。( )【青岛大学 2000 四、10(1分)】 45. AOE网一定是有向无环图。( )【青岛大学 2001 一、9 (1分)】

46. 在表示某工程的AOE网中,加速其关键路径上的任意关键活动均可缩短整个工程的完成时间。( )

【长沙铁道学院 1997 一、2 (1分)】

47.在AOE图中,关键路径上某个活动的时间缩短,整个工程的时间也就必定缩短。( )

【大连海事大学 2001 一、15 (1分)】

48.在AOE图中,关键路径上活动的时间延长多少,整个工程的时间也就随之延长多少。( ) 【大连海事大学 2001 一、16 (1分)】 49.当改变网上某一关键路径上任一关键活动后,必将产生不同的关键路径。【上海交通大学1998 一、

14】

三、填空题

1.判断一个无向图是一棵树的条件是______。 2.有向图G的强连通分量是指______。【北京科技大学 1997 一、7】 3.一个连通图的______是一个极小连通子图。【重庆大学 2000 一、1】 4.具有10个顶点的无向图,边的总数最多为______。【华中理工大学 2000 一、7 (1分)】 5.若用n表示图中顶点数目,则有_______条边的无向图成为完全图。【燕山大学1998 一、6(1分)】 6. 设无向图 G 有n 个顶点和e 条边,每个顶点Vi 的度为di(1<=i<=n〉,则e=______

【福州大学 1998 二、2 (2分)】

7.G是一个非连通无向图,共有28条边,则该图至少有______个顶点。

【西安电子科技大 2001软件一、8 (2分)】

8. 在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要______条弧。

【合肥工业大学 2000 三、8 (2分)】

9.在有n个顶点的有向图中,每个顶点的度最大可达______。【武汉大学 2000 一、3】 10.设G为具有N个顶点的无向连通图,则G中至少有______条边。

【长沙铁道学院 1997 二、2 (2分)】

11.n个顶点的连通无向图,其边的条数至少为______。【哈尔滨工业大学 2000 二、2(1分)】 12.如果含n个顶点的图形形成一个环,则它有______棵生成树。

【西安电子科技大学 2001软件 一、2 (2分)】 13.N个顶点的连通图的生成树含有______条边。【中山大学 1998 一、9 (1分)】 14.构造n个结点的强连通图,至少有______条弧。【北京轻工业学院 2000 一、4(2分)】 15.有N个顶点的有向图,至少需要量______条弧 才能保证是连通的。【西南交通大学 2000 一、3】 16.右图中的强连通分量的个数为( )个。

【北京邮电大学 2001 二、5 (2分)】 17.N个顶点的连通图用邻接矩阵表示时,该矩阵 至少有_______个非零元素。【中科院计算所1998 一、6(1分)】【中国科技大学1998 一、6(15/6分)】 18.在图G的邻接表表示中,每个顶点邻接表中所含的结点数,对于无向图来说等于该顶点的______;对于有向图来说等于该顶点的______。

【燕山大学 2001 二、5 (3分)】

19. 在有向图的邻接矩阵表示中,计算第I个顶点入度的方法是______。【青岛大学 2002 三、7 (2分)】

20. 对于一个具有n个顶点e条边的无向图的邻接表的表示,则表头向量大小为______,邻接表的边结点个数为______。【青岛大学 2002 三、8 (2分)】 21. 遍历图的过程实质上是______,breath-first search遍历图的时间复杂度______;depth-first search遍历图的时间复杂度______,两者不同之处在于______,反映在数据结构上的差别是______。

【厦门大学 1999 一、3】 22. 已知一无向图G=(V,E),其中V={a,b,c,d,e } E={(a,b),(a,d),(a,c),(d,c),(b,e)}现用某一种图遍历方法从顶点a开始遍历图,得到的序列为abecd,则采用的是______遍历方法。

【南京理工大学 1996 二、2 (2分)】

23. 一无向图G(V,E),其中V(G)={1,2,3,4,5,6,7},E(G)={(1,2),(1,3),(2,4),(2,5),(3,6),(3,7),(6,7)(5,1)},对该图从顶点3开始进行遍历,去掉遍历中未走过的边,得一生成树G’(V,E’),V(G’)=V(G),E(G’)={(1,3),(3,6),(7,3),(1,2),(1,5),(2,4)},则采用的遍历方法是______。

【南京理工大学 1997 三、6 (1分)】

24. 为了实现图的广度优先搜索,除了一个标志数组标志已访问的图的结点外,还需______存放被访问的结点以实现遍历。【南京理工大学 1999 二、9 (2分)】

25. 按下图所示,画出它的广度优先生成树______和深度优先生成树______。

【西安电子科技大学 1998 三、6 (5分)】

26.构造连通网最小生成树的两个典型算法是______。【北京科技大学 1998 一、5】 27.求图的最小生成树有两种算法,______算法适合于求稀疏图的最小生成树。

【南京理工大学 2001 二、6(2分)】

28. Prim(普里姆)算法适用于求______的网的最小生成树;kruskal(克鲁斯卡尔)算法适用于求______的网的最小生成树。【厦门大学 1999 一、4】

29.克鲁斯卡尔算法的时间复杂度为______,它对______图较为适合。【中科院计算所 1999 二、3 (2分)】 30.对于含N个顶点E条边的无向连通图,利用Prim算法生成最小代价生成树其时间复杂度为______,利用Kruskal算法生成最小代价生成树其时间复杂度为______。【长沙铁道学院 1998 二、2 (4分)】 31.下面描述的是一种构造最小生成树算法的基本思想。设要处理的无向图包括n个节点V1,V2,...,Vn,用相邻矩阵A表示,边的权全是正数。请在下列划线处填上正确叙述。 (1).若(Vi,Vj)是边,则A(i,j)的值等于______,若(Vi,Vj)不是边,则A(i,j)的值是一个比任何边的权______, 矩阵的对角线元素全为0。 (2).构造最小生成树过程中,若节点Vi已包括进生成树,就把相邻矩阵的对角线元素A(i,i)置成______,若(Vi,Vj)已包括进生成树,就把矩阵元素A(i,j)置成______。 (3).算法结束时,相邻矩阵中_____的元素指出最小生成树的_____。【山东工业大学1998二、4(6分)】

32. 有一个用于n个顶点连通带权无向图的算法描述如下: (1).设集合T1与T2,初始均为空; (2).在连通图上任选一点加入T1; (3).以下步骤重复n-1次:

a.在i属于T1,j不属于T1的边中选最小权的边; b.该边加入T2。

上述算法完成后,T2中共有______条边,该算法称______算法,T2中的边构成图的______。

【南京理工大学 1999 二、7 (4分)】 33. 有向图G可拓扑排序的判别条件是______。【长沙铁道学院 1998 二、9(2分)】

34. Dijkstra最短路径算法从源点到其余各顶点的最短路径的路径长度按______次序依次产生,该算法弧上的权出现______情况时,不能正确产生最短路径。【南京理工大学 1999 二、8(4分)】 35. 求从某源点到其余各顶点的Dijkstra算法在图的顶点数为10,用邻接矩阵表示图时计算时间约为10ms,则在图的顶点数为40,计算时间约为______ms。【南京理工大学 2000 二、3 (1.5分)】 36.求最短路径的Dijkstra算法的时间复杂度为______。【哈尔滨工业大学 2001 一、5 (2分)】 37.有向图G=(V,E),其中 V(G)={0,1,2,3,4,5},用三元组表示弧及弧上的权d.E(G)为{<0,5,100>,<0,2,10><1,2,5><0,4,30><4,5,60><3,5,10><2,3,50><4,3,20>},则从源点0到顶点3的最短路径长度是______,经过的中间顶点是______。【南京理工大学 1998 三、6 (4分)】 38. 上面的图去掉有向弧看成无向图则对应的最小生成树的边权之和为______。

【南京理工大学 1998 三、7(4分)】

39.设有向图有n个顶点和e条边,进行拓扑排序时,总的计算时间为______。

【西安电子科技大学 1999软件 一、7 (2分)】【武汉大学 2000 一、7】

40.AOV网中,结点表示______,边表示______。AOE网中,结点表示______,边表示______。

【北京理工大学 2001 七、3 (2分)】

41.在AOE网中,从源点到汇点路径上各活动时间总和最长的路径称为______。【重庆大学2000一、2】 42.在 AOV网 中,存在环意味着______,这是______的;对程序的数据流图来说,它表明存在______。

【厦门大学 1999 一、2】

43. 当一个AOV网用邻接表表示时,可按下列方法进行拓扑排序。 (1).查邻接表中入度为______的顶点,并进栈; (2).若栈不空,则①输出栈顶元素Vj,并退栈;②查Vj的直接后继Vk,对Vk入度处理,处理方法是______; (3).若栈空时,输出顶点数小于图的顶点数,说明有______,否则拓扑排序完成。 【南京理工大学 1996 二、3 (6分)】 44.已知图的邻接表结构为: CONST vtxnum={图的顶点数} TYPE vtxptr=1..vtxnum; arcptr=^arcnode;

arcnode=RECORD adjvex:vtxptr; nextarc:arcptr END;

vexnode=RECORD vexdata:{和顶点相关的信息};firstarc:arcptr END;

adjlist=ARRAY[vtxptr]OF vexnode;

本算法是实现图的深度优先遍历的非递归算法。其中,使用一个顺序栈stack。栈顶指针为top。visited为标志数组。

PROC dfs(g:adjlist;v0:vtxptr);

top=0; write(v0); visited[v0]:=ture; p:=g[v0].firstarc; WHILE (top<>0)OR(p<>NIL)DO

[WHILE(1)_______DO [v:=p^.adjvex;

IF(2)_______ THEN p:=p^.nextarc

ELSE [write(v); visited[v]:=true; top:=top+1; stack[top]:=p;

(3)_______] ]

IF top<>0 THEN[p:=stack[top]; top:=top-1; (4)_______]

]

ENDP.同济大学 2000 二、2 (10分)】

45.下面的算法完成图的深度优先遍历,请填空。

PROGRAM graph_traver; CONST nl=max_node_number;

TYPE vtxptr=1..nl; vtxptr0=0..nl; arcptr=^arcnode;

arcnode=RECORD vexi ,vexj: vtxptr; nexti, nextj: arcptr; END;;

vexnode=RECORD vexdata: char; firstin,firstout: arcptr; END; graph=ARRAY[vtxptr0] OF vexnode ; VAR ga:graph; n: integer;

visited: ARRAY[vtxptr0] OF boolean ; FUNC order (g: graph; v: char): vtxptr; (1)_______; i:=n;

WHILE g[i].vexdata<>v DO i:=i-1; order:=i; ENDF;

PROC creat(var g: graph); readln(n,e);

FOR i:= 1 TO n DO [readln(g[i].vexdata); g[i].firstin :=NIL ; g[i].firstout:=NIL;] FOR k:= 1 TO e DO [readln (vt,vh);

i:=order (g,vt); j:=order (g,vh); new (p); p^.vexi:=i ; p^.vexj:=j

p^.nextj:= ____(2)____; ___(3)____ :=p; p^.nexti:=: ____(4)____; ___(5)____ :=p;]

ENDP;

FUNC firstadj(g:graph; v:char): vtxptr0; i:=order(g,v); p:=g[i].firstout;

IF p<>NIL THEN firstadj:=(6)_______ELSE firstadj:=0; ENDF;

FUNC nextadj(g:graph; v:char; w:char): vtxptr0; i:=order(g,v); j:=order(g,w); p:=(7)_______; WHILE(p<>NIL ) AND (p^.vexj<>j) DO(8)______;

IF (9)______AND(10)______THEN nextadj:=p^.nexti^.vexj ELSE nextadj:=0; ENDF;

PROC dfs(g:graph; v0:char);

write(v0:2); visited[order(g,v0)]:=true; w:=(11)_______; WHILE w<>0 DO

[IF (12)______ THEN dfs(g,g[w].vexdata); w:=(13)_______;] ENDP;

PROC traver(g:graph);

FOR i:=1 TO n DO visited[i]:=false;

FOR i:=1 TO n DO IF NOT visited[i] THEN dfs(g,g[i].vexdata); ENDP; BEGIN

creat(ga); traver(ga);

END. 【北方交通大学 1999 三(20分)】

46.n个顶点的有向图用邻接矩阵array表示,下面是其拓扑排序算法,试补充完整。 注:(1).图的顶点号从 0开始计; (2).indegree 是有n个分量的一维数组,放顶点的入度; (3).函数 crein 用于算顶点入度; (4).有三个函数push(data),pop( ),check( )其含义为数据 data进栈,退栈和测试栈是否空(不空返回1,否则0)。

crein( array ,indegree,n)

{ for (i=0;i

for(i=0,i

for (j=0;j

topsort (array,indegree,n)

{ count= ((4)_______)

for (i=0;i

{ vex=pop( ); printf(vex); count++; for (i=0;i

{ k=array(6)_______

if ((7)_______ ) { indegree[i]--; if ((8)_______ ) push(i); } } } if( count

47.假设给定的有向图是用邻接表表示,作为输入的是图中顶点个数n和边的个数m, 以及图的m条边。在下面的程序中,我们用readdata程序过程输入图的信息,并建立该图的邻接表;利用topol程序过程获得图中顶点的一个拓扑序列。

PROGRAM topol_order(input , output) ; CONST maxn=20 ;

TYPE nodeptr=^nltype ;

nltype=RECORD num : integer ; link : nodeptr END ; chtype=RECORD count : integer ; head : nodeptr END ;

VAR ch : ARRAY [1 .. maxn] OF chtype ; m , n , top : integer ; PROCEDURE readdata ;

VAR i , j , u , v : integer ; p : nodeptr ; BEGIN

write (′input vertex number n= ′); readln (n) ; write (′input edge number m= ′); readln(m) ;

FOR i:=1 TO n DO BEGIN ch[i].count:= 0; ch[i].head:=NIL END; writeln(′input edges :′);

本文来源:https://www.bwwdw.com/article/pdwa.html

Top