大数据结构单元8练习参考问题详解.docx
- 文档编号:26473567
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:20
- 大小:204.39KB
大数据结构单元8练习参考问题详解.docx
《大数据结构单元8练习参考问题详解.docx》由会员分享,可在线阅读,更多相关《大数据结构单元8练习参考问题详解.docx(20页珍藏版)》请在冰豆网上搜索。
大数据结构单元8练习参考问题详解
单元练习8
一・判断题(下列各题,正确的请在前面的括号打7;错误的打X)
(V)(l)图可以没有边,但不能没有顶点。
(X)
(2)在无向图中,(Vi,V2)与(V2,V1)是两条不同的边。
(X)(3)令B接表只能用于有向图的存储。
3)(4)—个图的邻接矩阵表示是唯一的。
(X)(5)用邻接矩阵法存储一个图时,所占用的存储空间大小与图中顶点个数无关,而只与图的边数有关。
(X)(6)有向图不能逬行广度优先遍历。
(")(7)若一个无向图的以顶点Vi为起点逬行深度优先遍历,所得的遍历序列唯一,则可以唯一确走该图。
(V)(8)存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的上三角(或下三角)部分就可以了。
(X)(9)用邻接表法存储图时,占用的存储空间大小只与图中的边数有关,而与结点的个数无关。
(V)(10)若一个无向图中任一顶点出发,逬行一次深度优先遍历,就可以访问图中所有的顶点,则该图一走是连通的。
二•填空题
(1)图常用的存储方式有令腹矩阵和邻接表等。
(2)图的遍历有:
深度优先搜和广度优先搜等方法。
(3)有n条边的无向图邻接矩阵中,1的个数是_2n—°
(4)有向图的边也称为_弧—。
(5)图的邻接矩阵表示法是表示一之间相邻关系的矩阵。
(6)有向图G用邻接矩阵存储,其第i行的所有元素之和等于顶点i的—出度—。
(7)n个顶点e条边的图若采用邻接矩阵存储,则空间复杂度为:
0(")。
(8)n个顶点e条边的图若采用邻接表存储,则空间复杂度为:
O(n+e)。
(9)设有一稀疏图G,则G采用_邻接表—存储比较节省空间。
(10)设有一稠密图G”则G采用—邻接矩阵一存储比较节省空间.
(11)图的逆邻接表存储结构只适用于—有向—图。
(12)n个顶点的完全无向图有n(n-l)/2_条边。
(13)有向图的邻接表表示适于求顶点的出度°
(14)有向图的邻接矩阵表示中,第i列上非0元素的个数为顶点V,的入度。
(15)对于具有n个顶点的图,其生成树有且仅有n-1条边。
(16)对n个顶点,e条弧的有向图,其邻接表表示中,需要n+e个结点。
(17)从图中某一顶点出发,访遍图中其余顶点,且使每一顶点仅被访问一次,称这一过程为图的遍历。
(18)无向图的邻接矩阵一走是对称矩阵。
(19)_个连通网的最小生成树是该图所有生成树中权最小的生成树。
(20)若要求一个稠密图G的最小生成树.最好用Prim算法来求解。
三■选择题
(1)在一个图中,所有顶点的度数之和等于图的边数的(C)倍。
A・1/2
B.1
C.2
D・4
(2)在一个有向图中
所有顶点的入度之和等于所有顶点的出度之和的(
B)倍。
A・1/2
B.1
C・2
D.4
(3)对于一个具有n个顶点的有向图的边数最多有(
B)。
A・n
B・n(n-1)
C.n(n-l)/2
D.2n
(4)在一个具有n个顶点的无向图中,要连通全部顶点至少需要(C
)条边。
A・n
B・n+1
C・n-1
D.n/2
(5)有8个结点的有向元全图有(C)条边。
A・14
B.28
C.56
D.112
(6)深度优先遍历类似于二叉树的(A)。
A■先序遍历
B・中序遍丿力
c・后序遍历
D.层次遍历
(7)广度优先遍历类似于二叉树的(D)。
A・先序遍历
B・中序遍丿力
c・后序遍历
D.层次遍历
(8)任]可一个无向连通图的最小生成树(A)o
A■只有一棵
B.—棵或多棵
C・一定有多棵
D■可能不存在
D.n行任意列
(11)对于一个具有n个顶点和e条边的无向图,采用邻接表表示,则表头向星大小为(C
A.n-1B.n+1C.nD.n+e
(12)在图的表示法中,表示形式唯一的是(A)。
A.邻接矩阵表示法B.邻接表表示法
C.逆邻接表表示法D.邻接表和逆邻接表表示法
(13)在一个具有n个顶点e条边的图中,所有顶点的度数之和等于(C)。
A・nB・eC・2nD・2e
(14)下列图中r度为3的结点是(BX
A・VlB.V2
C.V3
D.V4
A・连通图
B.强连通图
C.生成树
D.无环图
(16)如下图所示,从顶点a出发r按深度优先逬行遍历,则可能得至啲一种顶点序列为(D
)算法。
(18)最小生成树的构造可使用(AA・prim算法B・卡尔算法
C・哈夫晏算法
D.迪杰斯特拉算法
(19)下面关于图的存储结构的叙述中正确的是(A)。
A•用邻接矩阵存储图,占用空间大小只与图中顶点数有关,而与边数无关
B•用邻接矩阵存储图,占用空间大小只与图中边数有关,而与顶点数无关
C.用邻接表存储图,占用空间大小只与图中顶点数有关,而与边数无关
D.用邻接表存储图,占用空间大小只与图中边数有关,而与顶点数无关
(20)连通分星是(C)的极通子图。
A.树B.图C.无向图D.有向图
四•应用题(30分)
1.有向图如下图所示,画出邻接矩阵W邻接表
解:
(1)邻接矩阵
12345
1
P1101、
2
00010
3
00001
4
10000
5
00010
■
2
►
°
4
A
■
►
5
A
1
A
4
A
(2)沁表
1
2
3
4
5
2・已知一个无向图有6个结点,9条边,这9条边依次为(0,1)40,2)40,4)40,5)#(1,2),(2,3),(2,4),(3,4),(4,5)。
试画出该无向图,并从顶点0出发,分别写出按深度优先搜索和按广度优先搜索进行遍历的结点序列。
(5分)
解:
从顶点0出发的深度优先搜索遍历的结点序列:
012345(答案不唯一)
从顶点0出发的广度优先搜索遍历的结点序列:
012453(答案不唯一)
3・已知一个无向图的顶点集为:
{a,b,C,d,e},其邻接矩阵如下,画出草图,写出顶点a出
发按深度优先搜索逬行遍历的结点序列。
(5分)
0
1
0
0
1
1
0
0
1
0
0
0
0
1
1
0
1
1
0
1
1
0
1
1
0
解:
(2)深度优先搜索:
abdce(答案不唯一)
广度优先搜索:
abedc(答案不唯一)
4•网G的邻接矩阵如下,试画出该图,并画出它的一棵最小生成树。
0
8
10
11
0
8
0
3
0
13
10
3
0
4
0
11
0
4
0
7
0
13
0
7
0
解:
最小生删:
Q
(1)画出相应的图;
(2)要使此图为完全图需要增加几条边。
11
34
137
5.已知某图G的邻接矩阵如图r
0101
1010
0101
1010
解:
(1)
(2)完全无向图应具有的边数为:
n*(n-l)l/2=4*(4-l)/2=6,所以还要增加2条边(如右图\
6・已知如图所示的有向图,请给出该图的:
(1)每个顶点的入/出度;
(2)邻接表;
(3)邻接矩阵。
解:
(1)
(2)
顶点
1
2
3
4
5
6
入度
3
2
1
1
2
2
出度
0
2
2
3
I
3
(3)
7•如图,请完成以下操作:
(2)写出无向带权图的邻接矩阵;
(3)设起点为a,求具最小生成树。
b
6
解:
(1)邻接矩阵为:
(2)起点为a,可以直接由原始图画出最小生成树
0
4
3
00
CO
00
CO
4
0
5
5
9
CO
00
CO
3
5
0
5
00
CO
CO
5
00
5
5
0
7
6
5
4
00
9
00
7
0
3
00
CO
00
CC
00
6
3
0
2
CO
00
S
00
5
C0
2
0
6
00
5
4
CO
CO
6
0
8・给走下列网G:
(1)画出网G的邻接矩阵;
(2)画出网G的最小生成树。
解:
五.程序题填空题
图G为有向无权图,试在邻接矩阵存储结构上实现删除一条边(v,w)的操作:
DeleteArc(G,v,w)。
若无顶点v或w,返回"ERROR";若成功删除,则边数减1,并返回"0K"。
(提示:
删除一条边的操作,可以将邻接矩阵的第i行全部置0)
解:
StatusDeleteArc(MGraph&Grcharvrcharw)〃在邻接矩阵表示的图G上删除边(vzw)
{if((i=LocateVex(G/v))<0)returnERROR;
if((j=LocateVex(G/w))<0)returnERROR;
if(G.arcs[i][j].adj)
{G.arcs[i][j].adj=0;
G.arcnum―;(或G.arcnum=G.arcnum-l)
}
returnOK;
}
六・算法题
1.编写一个无向图的邻接矩阵转换成邻接表的算法。
2.以知有n个顶点的有向图邻接表,设计算法分别实现以下功能:
(1)求出图G中每个顶点的出度、入度。
(2)求出G中出度最大的一个顶点,输出其顶点序号。
(3)计算图中度为0的顶点数。
1.解:
本题思想是逐个扫描邻接矩阵的各个元素,若第i行第j列的元素为1,则相应的邻接表的第i个单链表上增加一个j结点。
voidtrans(intedges[n][n],Adjlistadj)
{intij;
edgenode*p;
for(i=0;i {adj[i].data=i; adj[i].link=NULL; ) for(i=0;i for(j=OJ {if(edges[i][j]==l) {p=(edgenode*)malloc(sizeof(edgenode)); p->adjvex=j; p->next=adj[i].link; adj[i].link二p; } } } 2・ (1)求出度的思想: 计算出邻接表中第i个单链表的结点数即可。 intoutdegree(adjlistadjjntv) {intdegree=O; edgenode*p; p=adj[v].link; while(p! =NULL) {degree++; p=p->next; } returndegree; } voidprintout(adjlistadjjntn) {inti,degree; printf("TheOutdegreeare: \nM); fo「(i=0;ivn;i++) {degree=outdegree(adjj); printf(n(%d/%d)"ii/degree); } 求入度的思想: 计算出邻接表中结点i的结点数即可。 intindegree(adjlistadjjntnjntv) {inti/j/degree=O; edgenode*p; for(i=0;i {p=adj[i].link; while(p! =NULL) {if(p->adjvex==v) degree++; p=p->next; } } returndegree; } voidprintin(adjlistadjjntn) {inti.degree; printf("TheIndegreeare: \nM); for(i=0;i {degree=Indegree(adj/n/i); printf(n(%d/%d)"ii/degree); } (2)求最大庚的算法 voidmaxoutdegree(adjlistadjjntn) {intmaxdegree=Ormaxv=O/degreefi; for(i=0;i {degree=outdegree(adjj); if(degree>maxdegree) {maxdegree=degree; maxv=i; } } printf("maxoutdegree%d/maxvertex=%d,,/maxdegree/maxv); } (3)求度为0的顶点数的算法 intoutzero(adjlistadjrintn) {intnum=0J; for(i=0;i {if(outdegree(adjJ)==0) num++; } returnnum; } 模拟考题 1・已知如图所示的有向图,请给出该图的: (1)每个顶点的入度和出度; (2)逆邻接表。 解: (1) (2) 2・给走下列网G: 顶点 1 2 3 4 5 6 入度 3 2 1 1 2 2 出度 0 2 2 3 1 3 (1)写出网G以B为顶点的广度优先遍历的序列; (2)画出网G的最小生成树。 3・无向图G如图所示r(l)试画出邻接矩阵; (2)写出从A出发的深度优先遍历的序列。 3・已知图G的邻接表如下,以顶点1为出发点,完成下列问题: (1)写出以顶点1为出发点的广度优先遍历序列; (2)画出以顶点1为出发点的深度优先搜索得到的一棵二叉树。 解: (1)广度优先遍历序列: 1,2,5,4,3 (2)深度优先搜索得到的一棵二叉树: 5•试填空完成深度优先搜索的递归函数。 #defineMAXVEX100 structvertex //走义图的最大顶点数 //顶点集合 //边的集合 intvisited[MAXVEX]; voiddfs(adjlistadjjntv){inti; structedgenode*p; for(i=l;i<=n;i++)visited[i]=0; visited[v]=l; cinv; p=adj[v卜>link; while(p! =NULL) {if(visited[p->adjvex]==0)dfs(adjlist,p->adjvex);p=p->next; //顶点编号 //顶点的信息 }; typedefstructgraph {structvertexvexs[MAXVEX];intedges[MAXVEX][MAXVEX]; }sdjmax; //深度优先搜索的递归函数 //给visited数组赋初值0 〃取v的边的表头指针 〃从v的未访问过的邻接点出发进行深度优先搜索 〃找V的下一个邻接点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单元 练习 参考 问题 详解
![提示](https://static.bdocx.com/images/bang_tan.gif)