数据结构习题及答案07xitidaan

上传人:豆浆 文档编号:867021 上传时间:2017-05-19 格式:DOC 页数:6 大小:1.72MB
返回 下载 相关 举报
数据结构习题及答案07xitidaan_第1页
第1页 / 共6页
数据结构习题及答案07xitidaan_第2页
第2页 / 共6页
数据结构习题及答案07xitidaan_第3页
第3页 / 共6页
数据结构习题及答案07xitidaan_第4页
第4页 / 共6页
数据结构习题及答案07xitidaan_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《数据结构习题及答案07xitidaan》由会员分享,可在线阅读,更多相关《数据结构习题及答案07xitidaan(6页珍藏版)》请在金锄头文库上搜索。

1、第 7 章 图一、单选题 01-10 CBBCC BAACB 11-20 DAADB ACACB 21-30 DCDAD BCBAD二、填空题01、入度 02、n-1 03、邻接矩阵、邻接表04、深度、广度 04、出度 05、n06、O(n 2)、O(n+e) 07、有向 08、将邻接矩阵的第 i 行全部置 009、矩阵第 i 列非 0 元素之和 10、第 i 行第 j 列的元素是否为 011、O(n 2)、O(elog 2e) 12、克鲁斯卡尔(Kruskal)、普里姆(Prim) 13、递增 14、0 15、出度16、n 17、0 18、错误19、2(n-1) 20、存在三、简答题01、3

2、 个,分别是:a,bce,dfg02、03、普里姆算法产生边的序列:(1,3),(3,4),(4,6),(6,5),(5,2)克鲁斯卡尔算法产生边的序列:(4,6),(1,3),(4,3),(6,5),(2,5)04、v1,v2,v3,v4v1,v3,v2,v4v2,v1,v3,v405、(1) 每个顶点的入/出度 (2) 邻接矩阵(3) 邻接表 (4) 逆邻接表06、(1)邻接矩阵为:V b c d e f g h U V-UVexlowcosta4a3aaaaaa b,c,d,e,f,g,hVexlowcosta40 c5aaac5a,c b,d,e,f,g,hVexlowcost0 0

3、c5b9aac5a,c,b d,e,f,g,hVexlowcost0 0 0 d7d6d5d4a,c,b,d e,f,g,hVexlowcost0 0 0 d7d6d50 a,c,b,d,h e,f,gVexlowcost0 0 0 d7g20 0 a,c,b,d,h,g f,eVexlowcost0 0 0 f30 0 0 a,c,b,d,h,g,f eVexlowcost0 0 0 0 0 0 0 a,c,b,d,h,g,f,e 最小生成树07、邻接表为:fg(2)ac(3)fe(3)ab(4)dh(4)bd(5)dg(5)08、09、ac:2(a,c)af:6(a,c,f)ae:10(a

4、,c,e)ad:11(a,c,f,d)ag:14(a,c,f,d,g)ab:15(a,b)10、和上题类似,求解过程略。11、1,2,3,6,5,41,3,2,6,5,41,3,6,2,5,412、FALSE /初始化为未访问DSFTree(G, p-adjvex) /从相邻结点往下继续深度搜索p=p-next /下一个未访问的相邻结点四、算法设计题01、编写编历算法,完成对图的深度优先搜索和广度优先搜索。深度优先搜索:课本 P169 算法 7.4 和算法 7.5广度优先搜索:课本 P170 算法 7.602、编写算法,由依次输入的顶点数目、弧的数目、各顶点的信息和各条弧的信息建立有向图的邻接

5、表。解:Status Build_AdjList(ALGraph &G) /输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 InitALGraph(G); scanf(%d,&v); if(vnextarc;q=q-nextarc); q-nextarc=p; p-adjvex=j;p-nextarc=NULL; /while return OK; /Build_AdjList 03、试在邻接矩阵存储结构上实现图的基本操作:DeleteArc(G,v,w) ,即删除一条边的操作。(如果要删除所有从第 i 个顶点出发的边呢? 提示: 将邻接矩阵的第 i 行全部置 0 )解:/本题中的图

6、G 均为有向无权图。 Status Delete_Arc(MGraph &G,char v,char w)/在邻接矩阵表示的图 G 上删除边(v,w) if(i=LocateVex(G,v)。05、试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点 vi到顶点 vj的路径(ij)。注意:算法中涉及的图的基本操作必须在此存储结构上实现。int visitedMAXSIZE; /指示顶点是否在当前路径上 int exist_path_DFS(ALGraph G,int i,int j)/深度优先判断有向图 G 中顶点 i 到顶点 j 是否有路径,是则返回 1,否则返回

7、 0 if(i=j) return 1; /i 就是 j else visitedi=1; for(p=G.verticesi.firstarc;p;p=p-nextarc) k=p-adjvex; if(!visitedk&exist_path(k,j) return 1;/i 下游的顶点到 j 有路径 /for /else /exist_path_DFS 解 2:(以上算法似乎有问题:如果不存在路径,则原程序不能返回 0。我的解决方式是在原程序的中引入一变量 level 来控制递归进行的层数。具体的方法我在程序中用红色标记出来了。)int visitedMAXSIZE; /指示顶点是否在当

8、前路径上 int level1;/递归进行的层数int exist_path_DFS(ALGraph G,int i,int j)/深度优先判断有向图 G 中顶点 i 到顶点 j 是否有路径,是则返回 1,否则返回 0 if(i=j) return 1; /i 就是 j else visitedi=1; for(p=G.verticesi.firstarc;p;p=p-nextarc,level-) level+;k=p-adjvex; if(!visitedk&exist_path(k,j) return 1;/i 下游的顶点到 j 有路径 /for /else if (level=1) return 0;/exist_path_DFS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号