第7章 图习题
- 格式:docx
- 大小:19.98 KB
- 文档页数:4
《数据结构》期末复习题及参考答案- 第7章图//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 注意:做复习题时,请结合阅读教材,钻研教材,参考课件////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////一、选择题1、以下数据结构中,哪种具有非线性结构?A.栈B.队列C.双向链表D.十字链表2、下面关于图的存储的叙述中正确的是()。
A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关。
B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关。
C.用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关。
D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关3、在图的邻接表存储结构上执行深度优先搜索遍历类似于二叉树上的()A.先根遍历B.中根遍历C.后根遍历D.按层次遍历4、图的广度优先遍历算法类似于树的()。
A. 中根遍历B. 先根遍历C. 后根遍历D. 按层次遍历5、设无向图的顶点个数为n,则该图最多有()条边。
A.n-1 B.n(n-1)/2 C.n(n+1)/2 D.06、设有n个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.n-1 B.n C.n+1 D.nlogn;7、一个含有n个顶点的非连通图,则():A.它的边一定不大于n-1 B.它的边一定不大于nC.它的边一定小于n-1 D.它的边一定大于08、要连通具有n个顶点的有向图,至少需要()条边。
、单项选择题1.在一个无向图 G 中,所有顶点的度数之和等于所有边数之和的 _________ 倍A .l/2B .1D .42.在一个有向图中, 所有顶点的入度之和等于所有顶点的出度之和的 ________倍A .l/2 C .2D .43.一个具有 n 个顶点的无向图最多包含 _____ 条边。
A .nB .n +1C .n-1D .n(n-1)/24.一个具有 n 个顶点的无向完全图包含 _____ 条边。
A .n(n-l)B .n(n+l)C .n(n-l)/2D .n(n-l)/25.一个具有 n 个顶点的有向完全图包含 _____ 条边。
A .n(n-1)B .n(n+l)C .n(n-l)/2D .n(n+l)/2 6.对于具有 n 个顶点的图,若采用邻接矩阵表示,则该矩阵的大小为A. nB. n><h C .n-17 .无向图的邻接矩阵是一个 ______A .对称矩阵 C .上三角矩阵8.对于一个具有 n 个顶点和 e 条边的无 (有)向图,若采用邻接表表示,则表头 向量的大小为 。
A .n C . 2nD . 2e 9.对于一个具有 n 个顶点和 e 条边的无 (有)向图,若采用邻接表表示,则所有 顶C .2B .1 D . (n-I)也-I)B .零矩阵 D .对角矩阵 B .e点邻接表中的结点总数为_________ 。
B. eC. 2nD. 2e10.在有向图的邻接表中,每个顶点邻接表链接着该顶点所有邻接点。
A .入边B.出边C.入边和出边 D .不是入边也不是出边11.在有向图的逆邻接表中,每个顶点邻接表链接着该顶点所有邻接点。
A .入边B.出边C.入边和出边 D .不是人边也不是出边12.如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是A .完全图B.连通图C.有回路 D .一棵树13.采用邻接表存储的图的深度优先遍历算法类似于二叉树的算法。
图习题及标准答案————————————————————————————————作者:————————————————————————————————日期:第7章图一、选择题1.对于一个具有n个顶点和e条边的有向图,在用邻接表表示图时,拓扑排序算法时间复杂度为()A) O(n) B) O(n+e) C) O(n*n) D) O(n*n*n)【答案】B2.设无向图的顶点个数为n,则该图最多有()条边。
A)n-1 B)n(n-1)/2 C) n(n+1)/2 D)n2【答案】B3.连通分量指的是()A)无向图中的极小连通子图B)无向图中的极大连通子图C)有向图中的极小连通子图D)有向图中的极大连通子图【答案】B4.n个结点的完全有向图含有边的数目()A)n*n B)n(n+1)C)n/2 D)n*(n-1)【答案】D5.关键路径是()A) AOE网中从源点到汇点的最长路径B) AOE网中从源点到汇点的最短路径C) AOV网中从源点到汇点的最长路径D) AOV网中从源点到汇点的最短路径【答案】A6.有向图中一个顶点的度是该顶点的()A)入度 B)出度 C)入度与出度之和 D)(入度+出度)/2 【答案】C7.有e条边的无向图,若用邻接表存储,表中有()边结点。
A) e B) 2e C) e-1 D) 2(e-1)【答案】B8.实现图的广度优先搜索算法需使用的辅助数据结构为()A)栈 B)队列 C)二叉树 D)树【答案】B9.实现图的非递归深度优先搜索算法需使用的辅助数据结构为()A)栈 B)队列 C)二叉树 D)树【答案】A10.存储无向图的邻接矩阵一定是一个()A)上三角矩阵 B)稀疏矩阵 C)对称矩阵 D)对角矩阵【答案】C11.在一个有向图中所有顶点的入度之和等于出度之和的()倍A) 1/2 B)1 C) 2 D) 4【答案】B12.在图采用邻接表存储时,求最小生成树的 Prim 算法的时间复杂度为()A) O(n) B) O(n+e) C) O(n2) D) O(n3)【答案】B13.下列关于AOE网的叙述中,不正确的是()A)关键活动不按期完成就会影响整个工程的完成时间B)任何一个关键活动提前完成,那么整个工程将会提前完成C)所有的关键活动提前完成,那么整个工程将会提前完成D)某些关键活动提前完成,那么整个工程将会提前完成【答案】B14.具有10个顶点的无向图至少有多少条边才能保证连通()A) 9 B)10 C) 11 D) 12【答案】A15.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为()A) e B)2e C) n2-e D)n2-2e【答案】D16.对于一个具有n个顶点和e条边的无向图,如果采用邻接表来表示,则其表头向量的大小为。
第7章 《图》习题参考答案一、单选题(每题1分,共16分)( C )1. 在一个图中,所有顶点的度数之和等于图的边数的 倍。
A .1/2 B. 1 C. 2 D. 4 (B )2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的 倍。
A .1/2 B. 1 C. 2 D. 4 ( B )3. 有8个结点的无向图最多有 条边。
A .14 B. 28 C. 56 D. 112 ( C )4. 有8个结点的无向连通图最少有 条边。
A .5 B. 6 C. 7 D. 8 ( C )5. 有8个结点的有向完全图有 条边。
A .14 B. 28 C. 56 D. 112 (B )6. 用邻接表表示图进行广度优先遍历时,通常是采用 来实现算法的。
A .栈 B. 队列 C. 树 D. 图 ( A )7. 用邻接表表示图进行深度优先遍历时,通常是采用 来实现算法的。
A .栈 B. 队列 C. 树 D. 图 ()8. 已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是( D )9. 已知图的邻接矩阵同上题8,根据算法,则从顶点0出发,按深度优先遍历的结点序列是A . 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2C. 0 4 2 3 1 6 5D. 0 1 2 34 6 5 ( D )10. 已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是( A )11. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是A .0 2 4 3 1 5 6B. 0 1 3 6 5 4 2C. 0 1 3 4 2 5 6D. 0 3 6 1 5 4 2⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡0100011101100001011010110011001000110010011011110A .0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 3(A)12. 深度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(D)13. 广度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(A)14. 任何一个无向连通图的最小生成树A.只有一棵 B. 一棵或多棵 C. 一定有多棵 D. 可能不存在(注,生成树不唯一,但最小生成树唯一,即边权之和或树权最小的情况唯一)二、填空题(每空1分,共20分)1. 图有邻接矩阵、邻接表等存储结构,遍历图有深度优先遍历、广度优先遍历等方法。
第七章图(参考答案)7.1(1)邻接矩阵中非零元素的个数的一半为无向图的边数;(2)A[i][j]= =0为顶点,I 和j无边,否则j和j有边相通;(3)任一顶点I的度是第I行非0元素的个数。
7.2(1)任一顶点间均有通路,故是强连通;(2)简单路径V4 V3 V1 V2;(3)0 1 ∞ 1∞ 0 1 ∞1 ∞ 0 ∞∞∞ 1 0邻接矩阵邻接表(2)从顶点4开始的DFS序列:V5,V3,V4,V6,V2,V1(3)从顶点4开始的BFS序列:V4,V5,V3,V6,V1,V27.4(1)①adjlisttp g; vtxptr i,j; //全程变量② void dfs(vtxptr x)//从顶点x开始深度优先遍历图g。
在遍历中若发现顶点j,则说明顶点i和j间有路径。
{ visited[x]=1; //置访问标记if (y= =j){ found=1;exit(0);}//有通路,退出else { p=g[x].firstarc;//找x的第一邻接点while (p!=null){ k=p->adjvex;if (!visited[k])dfs(k);p=p->nextarc;//下一邻接点}}③ void connect_DFS (adjlisttp g)//基于图的深度优先遍历策略,本算法判断一邻接表为存储结构的图g种,是否存在顶点i //到顶点j的路径。
设 1<=i ,j<=n,i<>j.{ visited[1..n]=0;found=0;scanf (&i,&j);dfs (i);if (found) printf (” 顶点”,i,”和顶点”,j,”有路径”);else printf (” 顶点”,i,”和顶点”,j,”无路径”);}// void connect_DFS(2)宽度优先遍历全程变量,调用函数与(1)相同,下面仅写宽度优先遍历部分。
第七章:图练习题一、选择题1、一个有n个顶点的无向图最多有()条边。
A、nB、n(n-1)C、n(n-1)/2D、2n2、具有6个顶点的无向图至少有()条边才能保证是一个连通图。
A、5B、6C、7D、83、具有n个顶点且每一对不同的顶点之间都有一条边的图被称为()。
A、线性图B、无向完全图C、无向图D、简单图4、具有4个顶点的无向完全图有()条边。
A、6B、12C、16D、205、G是一个非连通无向图,共有28条边,则该图至少有()个顶点A、6B、7C、8D、96、存储稀疏图的数据结构常用的是()。
A、邻接矩阵B、三元组C、邻接表D、十字链表7、对一个具有n个顶点的图,采用邻接矩阵表示则该矩阵的大小为()。
A、nB、(n-1)2C、(n+1)2D、n28、设连通图G的顶点数为n,则G的生成树的边数为()。
A、n-1B、nC、2nD、2n-19、n个顶点的无向图的邻接表中结点总数最多有()个。
A、2nB、nC、n/2D、n(n-1)10、对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表向量的大小为(),所有顶点邻接表的结点总数为()。
A、nB、n+1C、n-1D、2nE、e/2F、eG、2eH、n+e11、在有向图的邻接表存储结构中,顶点v在表结点中出现的次数是()。
A、顶点v的度B、顶点v的出度C、顶点v 的入度D、依附于顶点v的边数12、已知一个图,若从顶点a出发进行深度和广度优先搜索遍历,则可能得到的顶点序列分别为()和()(1)A、abecdf B、acfebd C、acebfd D、acfdeb(2)A、abcedf B、abcefd C、abedfc D、acfdeb13、采用邻接表存储的图的深度和广度优先搜索遍历算法类似于二叉树的()和()。
A、中序遍历B、先序遍历C、后序遍历D、层次遍历14、已知一有向图的邻接表存储结构如下图所示,分别根据图的深度和广度优先搜索遍历算法,从顶点v1出发,得到的顶点序列分别为()和()。
第7章图二.判断题部分答案解释如下。
2. 不一定是连通图,可能有若干连通分量 11. 对称矩阵可存储上(下)三角矩阵14.只有有向完全图的邻接矩阵是对称的 16. 邻接矩阵中元素值可以存储权值21. 只有无向连通图才有生成树 22. 最小生成树不唯一,但最小生成树上权值之和相等26. 是自由树,即根结点不确定35. 对有向无环图,拓扑排序成功;否则,图中有环,不能说算法不适合。
42. AOV网是用顶点代表活动,弧表示活动间的优先关系的有向图,叫顶点表示活动的网。
45. 能求出关键路径的AOE网一定是有向无环图46. 只有该关键活动为各关键路径所共有,且减少它尚不能改变关键路径的前提下,才可缩短工期。
48.按着定义,AOE网中关键路径是从“源点”到“汇点”路径长度最长的路径。
自然,关键路径上活动的时间延长多少,整个工程的时间也就随之延长多少。
三.填空题1.有n个顶点,n-1条边的无向连通图2.有向图的极大强连通子图3. 生成树9. 2(n-1) 10. N-1 11. n-1 12. n 13. N-1 14. n15. N16. 3 17. 2(N-1) 18. 度出度 19. 第I列非零元素个数 20.n 2e21.(1)查找顶点的邻接点的过程 (2)O(n+e) (3)O(n+e) (4)访问顶点的顺序不同 (5)队列和栈22. 深度优先 23.宽度优先遍历 24.队列25.因未给出存储结构,答案不唯一。
本题按邻接表存储结构,邻接点按字典序排列。
25题(1) 25题(2) 26.普里姆(prim )算法和克鲁斯卡尔(Kruskal )算法 27.克鲁斯卡尔28.边稠密 边稀疏 29. O(eloge ) 边稀疏 30.O(n 2) O(eloge) 31.(1)(V i ,V j )边上的权值 都大的数 (2)1 负值 (3)为负 边32.(1)n-1 (2)普里姆 (3)最小生成树 33.不存在环 34.递增 负值 35.16036.O(n 2) 37. 50,经过中间顶点④ 38. 75 39.O(n+e )40.(1)活动 (2)活动间的优先关系 (3)事件 (4)活动 边上的权代表活动持续时间41.关键路径 42.(1)某项活动以自己为先决条件 (2)荒谬 (3)死循环 43.(1)零 (2)V k 度减1,若V k 入度己减到零,则V k 顶点入栈 (3)环44.(1)p<>nil (2)visited[v]=true (3)p=g[v].firstarc (4)p=p^.nextarc45.(1)g[0].vexdata=v (2)g[j].firstin (3)g[j].firstin (4)g[i].firstout (5)g[i].firstout (6)p^.vexj (7)g[i].firstout (8)p:=p^.nexti (9)p<>nil (10)p^.vexj=j(11)firstadj(g,v 0) (12)not visited[w] (13)nextadj(g,v 0,w)46.(1)0 (2)j (3)i (4)0 (5)indegree[i]==0 (6)[vex][i] (7)k==1 (8)indegree[i]==047.(1)p^.link:=ch[u ].head (2)ch[u ].head:=p (3)top<>0 (4)j:=top (5)top:=ch[j].count(6)t:=t^.link48.(1)V1 V4 V3 V6 V2 V5(尽管图以邻接表为存储结构,但因没规定邻接点的排列,所以结果是不唯一的。
第七章图
一、判断题
1.一个无向图的邻接矩阵中各非零元素之和与图中边的条数相等。
()
2.一个有向图的邻接矩阵中各非零元素之和与图中边的条数相等。
()
3.一个对称矩阵一定对应着一个无向图。
()
4.一个有向图的邻接矩阵一定是一个非对称矩阵。
()
二、选择题
1.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。
(A)1/2(B)1(C)2(D)4
2.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。
(A)1/2(B)1(C)2(D)4
3.一个有n个顶点的无向图最多有()条边。
(A)n (B)n(n-1)(C)n(n-1)/2(D)2n
4.具有4个顶点的无向完全图有()条边。
(A)6(B)12(C)16(D)20
5.具有6个顶点的无向图至少应有()条边才能确保是一个连通图。
(A)5(B)6(C)7(D)8
6.在一个具有n个顶点的无向图中,要连通全部顶点至少需要()条边。
(A)n (B)n+1(C)n-1(D)n/2
7.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小()(A)n (B)(n-1)2(C)n-1 (D)n2
8.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量
的大小为(),所有邻接表中的结点总数是()。
①(A)n (B)n+1(C)n-1(D)n+e
②(A)e/2(B)e(C)2e (D)n+e
9.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。
(A)先序遍历(B)中序遍历(C)后序遍历(D)按层遍历
10.采用邻接表存储的图的宽度优先遍历算法类似于二叉树的()。
(A)先序遍历(B)中序遍历(C)后序遍历(D)按层遍历
11.判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以利用
().
(A)求关键路径的方法(B)求最短路径的Dijkstm方法
(C)宽度优先遍历算法(D)深度优先遍历算法
12.用Prim算法求下列连通的带权
图的最小代价生成树,在算法执行
的某刻,已选取的顶点集合U={1,
2,5},边的集合TE={(1,2),
(2,5)},要选取下一条权值最
小的边,应当从()组中选取。
(A){(1,4),(3,4),(3,5),(2,5)}
(B){(5,4),(5,3),(5,6)}
(C){(1,2),(2,3),(3,5)}
(D){(3,4),(3,5),(4,5),(1,4)}
三、填空题
1.n个顶点的连通图至少_____________条边。
2.在一个无环有向图G中,若存在一条从顶点i到顶点j的弧,则在顶点的
拓扑序列中,顶点i与顶点j的先后次序是_________________。
3.在一个无向图的邻接表中,若表结点的个数是m,则图中边的条数是
________________条。
4. 如果从一个顶点出发又回到该顶点,则此路径叫做_______。
5.如果从一无向图的任意顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是____________。
6.若采用邻接表的存储结构,则图的广度优先搜索类似于二叉树的________
遍历。
7. 一个连通图的生成树是该图的________连通子图。
若这个连通图有n个顶点, 则它的生成树有________条边。
四、算法设计:
1.试在无向图的邻接矩阵和邻接链表上实现如下算法:
(1)往图中插入一个顶点
(2)往图中插入一条边
(3)删去图中某顶点
(4)删去图中某条边
2.下面的伪代码是一个广度优先搜索算法,试以下图中的v0为源点执行该算
法,请回答下述问题:
(1)对图中顶点vn+1,它需入队多少次?它被重复访问多少次?
(2)若要避免重复访问同一个顶点的错误,应如何修改此算法?
void BFS(ALGraph *G,int k)
{//以下省略局部变量的说明,visited各分量初值为假
InitQueue(&Q);//置空队列
EnQueue(&Q,k);//k入队
while(!QueueEmpty(&Q)){
i=DeQueue(&Q);//vi出队
visited[i]=TRUE;//置访问标记
printf("%c",G->adjlist[i].vertex;//访问vi
for(p=G->adjlist[i].firstedge;p;p=p->next)
//依次搜索vi的邻接点vj(不妨设p->adjvex=j)
if(!visited[p->adjvex])//若vj没有访问过
EnQueue(&Q,p->adjvex);//vj入队
}//endofwhile
}//BFS
3.试以邻接表和邻接矩阵为存储结构,分别写出基于DFS和BFS遍历的算法来判别顶点vi和vj(i<>j)之间是否有路径。
4.试分别写出求DFS和BFS生成树(或生成森林)的算法,要求打印出所有的
树边。
5.写一算法求连通分量的个数并输出各连通分量的顶点集。
6.设图中各边的权值都相等,试以邻接矩阵和邻接表为存储结构,分别写出算法:
(1)求顶点vi到顶点vj(i<>j)的最短路径
(2)求源点vi到其余各顶点的最短路径
要求输出路径上的所有顶点(提示:利用BFS遍历的思想)
7.以邻接表为存储结构,写一个基于DFS遍历策略的算法,求图中通过某顶点vk的简单回路(若存在)。
8.写一算法求有向图的所有根(若存在),分析算法的时间复杂度。
参考答案:
一、判断题
1、×
2、√
3、×
4、×
二、选择题
1. C
2.B
3. C
4. A
5. A
6.C 7、D 8、A、C 9、A 10、D 11、D 12、B
三、填空题
1、n-1
2、i在前,j在后
3、m/2
4、回路
5、强连通图
6、按层
7、极大;n-1。