第7章 图 历年试题及参考答案08.docx
《第7章 图 历年试题及参考答案08.docx》由会员分享,可在线阅读,更多相关《第7章 图 历年试题及参考答案08.docx(15页珍藏版)》请在冰豆网上搜索。
![第7章 图 历年试题及参考答案08.docx](https://file1.bdocx.com/fileroot1/2023-1/30/7301e39b-9d46-43a8-820f-d148b573f337/7301e39b-9d46-43a8-820f-d148b573f3371.gif)
第7章图历年试题及参考答案08
第7章图
(2008年1月)
9、假设有向图含n个顶点及e条弧,则表示该图的邻接表中包含的弧结点个数为( )
A、nB、e
C、2eD、n·e
10、如图所示的有向无环图可以得到的不同拓扑序列的个数为( )
A、1B、2
C、3D、4
22、已知一个有向网如图所示,从顶点1到顶点4的最短路径长度为___________。
28、已知有向图的邻接表如图所示,
(1)写出从顶点A出发,对该图进行广度优先搜索遍历的顶点序列;
(2)
画出该有向图的逆邻接表。
(1)
(2)
33、设有向图邻接表定义如下;
typedefstruct{
VertexNodeadjlist[MaxVertexNum];
intn,e;//图的当前顶点数和弧数
}ALGraph;//邻接表类型
vertex
firstedge
其中顶点表结点VertexNode结构为:
边表结点EdegNode结构为:
adjvex
next
阅读下列算法f33,并回答问题:
(1)已知有向图G的邻接表如图所示,写出算法f33的输出结果;
(2)简述算法f33的功能。
voiddfs(ALGraph*G,intv)
{
EdgeNode*p;
visited[v]=TRUE;
printf("%c",G->adjlist[v].vertex);
for(p=(G->adjlist[v]).firstedge;p;p=p->next)
if(!
visited[p->adjvex])
dfs(G,p->adjvex);
}
voidf33(ALGraph*G)
{
intv,w;
for(v=0;vn;v++){
for(w=0;wn;w++)
visited[w]=FALSE;
printf("%d:
",v);
dfs(G,v);
printf("\n");
}
}
(1)
(2)
(2008年10月)
8、在一个具有n个顶点的有向图中,所有顶点的出度之和为Dout,则所有顶点的入度之和为()
A、DoutB、Dout-1
C、Dout+1D、n
9、如图所示的有向无环图可以得到的拓扑序列的个数是()
A、3B、4
C、5D、6
10、如图所示的带权无向图的最小生成树的权为()
A、51B、52
C、54D、56
22、n个顶点且含有环路的无向连通图中,至少含有条边。
27、图的邻接表的类型定义如下所示:
#defineMaxVertexNum50
typedefstructnode{
intadjvex;
structnode*next;
}EdgeNode;
typedefstruct{
VertexTypevertex;
EdgeNode*firstedge;
}VertexNode;
typedefVertexNodeAdjList[MaxVertexNum];
typedefstruct{
AdjListadjlist;
intn,e;
}ALGraph;
为便于删除和插入图的顶点的操作,可将邻接表的表头向量定义为链式结构,两种定义的存储表示实例如下图所示,请写出重新定义的类型说明。
(2009年1月)
10、已知含6个顶点(v0,v1,v2,v3,v4,v5)的无向图的邻接矩阵如图所示,则从顶点v0出发进行深度优先遍历可能得到的顶点访问序列为()
A、(v0,v1,v2,v5,v4,v3)
B、(v0,v1,v2,v3,v4,v5)
C、(v0,v1,v5,v2,v3,v4)
D、(v0,v1,v4,v5,v2,v3)
11、如图所示有向图的一个拓扑序列是()
A、ABCDEF
B、FCBEAD
C、FEDCBA
D、DAEBCF
22、若用邻接矩阵表示有向图,则顶点i的入度等于矩阵中_________。
32、设有向图邻接表定义如下:
typedefstruct{
VertexNodeadjlist[MaxVertexNum];
intn,e;//图的当前顶点数和弧数
}ALGraph;//邻接表类型
其中顶点表结点VertexNode
边表结点EdgeNode结构为:
阅读下列算法,并回答问题:
(1)已知某有向图存储在如图所示的邻接表G中,写出执行f32(&G)的输出;
(2)简述算法f32的功能。
intvisited[MaxNum];
voidDFS(ALGraph*G,inti){
EdgeNode*p;
visited[i]=TRUE;
if(G->adjlist[i].firstedge==NULL)
printf("%c",G->adjlist[i].vertex);
else{
p=G->adjlist[i].firstedge;
while(p!
=NULL){
if(!
visited[p->adjvex])
DFS(G,p->adjvex);
p=p->next;
}
}
}
voidf32(ALGraph*G){
inti;
for(i=0;in;i++)
visited[i]=FALSE;
for(i=0;in;i++)
if(!
visited[i])DFS(G,i);
}
(1)
(2)
(2009年10月)
11、若非连通无向图G含有21条边,则G的顶点个数至少为( )
A、7B、8
C、21D、22
12、如图所示的有向图的拓扑序列是( )
A、c,d,b,a,e
B、c,a,d,b,e
C、c,d,e,a,b
D、c,a,b,d,e
22、求最小生成树的克鲁斯卡尔(Kruskal)算法耗用的时间与图中________的数目正相关。
28、已知无向图G的邻接表如图所示,
(1)画出该无向图;
(2)画出该图的广度优先生成森林。
30、阅读下列算法,并回答问题:
(1)无向图G如图所示,写出算法f30(&G)的返回值;
(2)简述算法f30的功能。
#defineMaxNum20
intvisited[MaxNum];
voidDFS(Graph*g,inti);
/*从顶点vi出发进行深度优先搜索,访问顶点vj时置visited[j]为1*/
intf30(Graph*g)
{inti,k;
for(i=0;in;i++)/*g->n为图g的顶点数目*/
visited[i]=0;
for(i=k=0;in;i++)
if(visited[i]==0)
{k++;
DFS(g,i);
}
returnk;
}
(2010年1月)
11、对下面有向图给出了四种可能的拓扑序列,其中错误的是()
A、1,5,2,6,3,4B、1,5,6,2,3,4
C、5,1,6,3,4,2D、5,1,2,6,4,3
12、以v1为起始结点对下图进行深度优先遍历,正确的遍历序列是()
A、v1,v2,v3,v4,v5,v6,v7B、v1,v2,v5,v4,v3,v7,v6
C、v1,v2,v3,v4,v7,v5,v6D、v1,v2,v5,v6,v7,v3,v4
22、已知有向图如下所示,其中顶点A到顶点C的最短路径长度是_________。
27、已知一个无向图G=(V,E),其中V={A,B,C,D,E,F},邻接矩阵表示如下所示。
请回答下列问题:
(1)请画出对应的图G。
(2)画出图G的邻接表存储结构。
(2010年10月)
9、在图G中求两个结点之间的最短路径可以采用的算法是()
A、迪杰斯特拉(Dijkstra)算法B、克鲁斯卡尔(Kruskal)算法
C、普里姆(Prim)算法D、广度优先遍历(BFS)算法
10、下图G=(V,E)是一个带权连通图,G的最小生成树的权为()
A、15
B、16
C、17
D、18
11、在下图中,从顶点1出发进行深度优先遍历可得到的序列是()
A、1234567
B、1426375
C、1425367
D、1246537
21、若无向图G中有n个顶点m条边,采用邻接矩阵存储,则该矩阵中非0元素的个数为___________。
29、请回答下列问题:
(1)英文缩写DAG的中文含义是什么?
(2)请给出下面DAG图的全部拓扑排序。
(2011年1月)
9、下列叙述中错误的是()
A、图的遍历是从给定的源点出发对每一个顶点访问且仅访问一次
B、图的遍历可以采用深度优先遍历和广度优先遍历
C、图的广度优先遍历只适用于无向图
D、图的深度优先遍历是一个递归过程
10、已知有向图G=(V,E),其中V={V1,V2,V3,V4},E={,,,,},图G的拓扑序列是()
A、V1,V2,V3,V4B、V1,V3,V2,V4
C、V1,V3,V4,V2D、V1,V2,V4,V3
22、一个有n个顶点的无向连通图,最少有________________条边。
27、已知有向图的邻接表如图所示,请回答下面问题:
(1)给出该图的邻接矩阵;
(2)从结点A出发,写出该图的深度优先遍历序列。
参考答案
(2008年1月)
9、B
10、C
22、55
28、
(1)ABDCE
(2)
33、
(1)0:
AB
1:
B
2:
CEAB
3:
DEABC
4:
EAB
(2)从有向图的每个顶点出发进行深度优先遍历,输出遍历过程中访问到的顶点。
(2008年10月)
8、A
9、C
10、C
22、n条边。
27、
typedefcharVertexType;
typedefstructnode
{//边点表结点定义
VertexNode*adjvex;
structnode*next;
}EdgeNode;
typedefstructvertexnode
{//顶点表结点定义
VertexTypevertex;
structvertexnode*next;
EdgeNode*firstedge;
}VertexNode;
typedefstruct
{//图的定义
VertexNode*adjlist;
intn,e;
}ALGraph;
(2009年1月)
10、A
11、B
22、第i列1(非0元)的个数。
32、
(1)BD
(2)输出出度为0的顶点值。
(2009年10月)
11、B
12、B
22、边
28、
(1)
(2)
30、
(1)3
(2)求连通分量的个数
(2010年1月)
11、C
12、D
22、35
27、
(1)
(2)
(2010年10月)
9、A
10、D
11、B
21、2m
29、
(1)有向无环图
(2)abdcefg、abdcfeg、adbcefg、adbcfeg
(2011年1月)
9、C
10、A
22、n-1
27、已知有向图的邻接表如图所示,请回答下面问题:
(1)
(2)ABCED