数据结构习题及答案07xitidaan

2026/1/22 15:47:47

第7章 图

一、单选题 01-10 CBBCC BAACB 11-20 DAADB ACACB 21-30 DCDAD BCBAD 二、填空题 01、入度

2

02、n-1 04、出度 07、有向

03、邻接矩阵、邻接表 05、n

08、将邻接矩阵的第i行全部置0 10、第i行第j列的元素是否为0 15、出度 18、错误

04、深度、广度

06、O(n)、O(n+e) 11、O(n)、O(elog2e) 13、递增 16、n

三、简答题

19、2(n-1)

2

09、矩阵第i列非0元素之和

14、0 17、0 20、存在

12、克鲁斯卡尔(Kruskal)、普里姆(Prim)

01、3个,分别是:a,bce,dfg 02、

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,v4

v1,v3,v2,v4 v2,v1,v3,v4

05、(1) 每个顶点的入/出度 (2) 邻接矩阵

(3) 邻接表 (4) 逆邻接表

06、(1)邻接矩阵为:

V Vex lowcost Vex lowcost Vex lowcost Vex lowcost Vex lowcost Vex lowcost Vex lowcost Vex lowcost b a 4 a 4 0 c a 3 0 d a e a f a g a h a ∞ c 5 c 5 d 4 0 U {a} V-U {b,c,d,e,f,g,h} ∞ ∞ c 5 a ∞ b 9 d 7 ∞ ∞ a a {a,c} {b,d,e,f,g,h} ∞ ∞ a a 0 c 5 {a,c,b} {d,e,f,g,h} ∞ ∞ d 6 d 6 g 2 0 0 d 5 d 5 0 0 0 0 {a,c,b,d} {e,f,g,h} 0 0 0 d 7 {a,c,b,d,h} {e,f,g} 0 0 0 d 7 0 {a,c,b,d,h,g} {f,e} 0 0 0 f 3 0 {a,c,b,d,h,g,f} {e} 0 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、

a?c:2(a,c) a?f:6(a,c,f) a?e:10(a,c,e) a?d:11(a,c,f,d) a?g:14(a,c,f,d,g) a?b:15(a,b)

10、和上题类似,求解过程略。

11、

1,2,3,6,5,4 1,3,2,6,5,4 1,3,6,2,5,4 12、

FALSE //初始化为未访问

DSFTree(G, p->adjvex) //从相邻结点往下继续深度搜索 p=p->next //下一个未访问的相邻结点

四、算法设计题

01、编写编历算法,完成对图的深度优先搜索和广度优先搜索。 深度优先搜索:课本P169算法7.4和算法7.5

广度优先搜索:课本P170算法7.6

02、编写算法,由依次输入的顶点数目、弧的数目、各顶点的信息和各条弧的信息建立有向图的邻接表。 解:Status Build_AdjList(ALGraph &G) //输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 { InitALGraph(G); scanf(\

if(v<0) return ERROR; //顶点数不能为负 G.vexnum=v; scanf(\

if(a<0) return ERROR; //边数不能为负 G.arcnum=a; for(m=0;m

G.vertices[m].data=getchar(); //输入各顶点的符号 for(m=1;m<=a;m++) {

t=getchar();h=getchar(); //t为弧尾,h为弧头 if((i=LocateVex(G,t))<0) return ERROR;

if((j=LocateVex(G,h))<0) return ERROR; //顶点未找到 p=(ArcNode*)malloc(sizeof(ArcNode));

if(!G.vertices.[i].firstarc) G.vertices[i].firstarc=p; else {

for(q=G.vertices[i].firstarc;q->nextarc;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 ) 解://本题中的图G均为有向无权图。

Status Delete_Arc(MGraph &G,char v,char w)//在邻接矩阵表示的图G上删除边(v,w) {

if((i=LocateVex(G,v))<0) return ERROR; if((j=LocateVex(G,w))<0) return ERROR; if(G.arcs[i][j].adj) {

G.arcs[i][j].adj=0; G.arcnum--; }

return OK; }//Delete_Arc


数据结构习题及答案07xitidaan.doc 将本文的Word文档下载到电脑
搜索更多关于: 数据结构习题及答案07xitidaan 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219