数据结构图题库

这篇博客提供了大量的数据结构图题目,包括有向图的拓扑排序、无向图的深度优先和广度优先遍历,以及最短路算法的讨论。通过实例解析了Dijkstra算法的限制和Kruskal算法的最小生成树构建过程。此外,还涉及了无向图的边数与顶点度数的关系等知识点。
摘要由CSDN通过智能技术生成

免费版:华文慕课-数据结构图题库

王道压缩矩阵的题在栈与队列里

网络课课后题

1、

有向图G如下图所示,请写出所有拓扑排序序列。所有的顶点都直接用其数字标号表示,如拓扑排序序列为25.png,那么请写成1234(中间没有空格)。不同的拓扑排序序列按照字典序排序,中间用一个空格隔开。

Screen Shot 2016-10-20 at 21.36.40.png

解析:

根据拓扑排序的定义,顶点1必须在顶点3前,顶点1、顶点2和顶点3必须在顶点4前,故排列可以为1234、1324、2134

答案: 1234 1324 2134

扩充例子:

2、无向图G=(V, E),其中:V={a, b, c, d, e, f}, E={(a, b), (a, e), (a, c), (b, e), (c, f), (f, d), (e, d)},对该图进行深度优先遍历(优先访问编号小的结点),得到的顶点序列为?

 A、abedfc

 B、aebdfc

解析:

根据深度优先的算法,先访问a,再访问a的邻接顶点b,再访问b的邻接顶点e,访问e的邻接顶点d,访问d的邻接顶点f(注意是无向图),访问f的邻接顶点c,不再有没访问的顶点,结束。

3、下列关于最短路算法的说法正确的有:

 A、当图中不存在负权回路但是存在负权边时,Dijkstra算法不一定能求出源点到所有点的最短路。

解析:即使是只有负权边,也会导致以前已经被选出来更新其它结点最短路值的结点的最短路值被更新,造成错误。

 B、当图中不存在负权边时,Dijkstra算法能求出每对顶点间最短路径。

解析:可以执行多次Dijkstra算法实现这一要求。

 C、当图中存在负权回路时,Dijkstra算法也一定能求出源点到所有点的最短路。

解析:Dijkstra算法无法处理图中存在任何负权边的情况。

 D、Dijkstra算法不能用于每对顶点间最短路计算。

解析:可以执行多次Dijkstra算法实现这一要求。

4、请使用Kruskal算法求出下图的最小生成树,依次写出每次被选择的合法的合并代价最小的边的编号(如果同时存在多条边满足要求,选择编号最小的)。顶点a到顶点b (a < b)之间的边编号为ab,例如图中权值为1的边编号为02。

Screen Shot 2016-10-20 at 21.47.02.png

解析

Kruskal算法优先选择权值小的边先挑选权值为1的边02,再选择权值为2的边35,再选择权值为3的边14,再选择权值为4的边25,再选择权值为5的边,只有选择12才能连接两个不同的连通分支

答案: 02 35 14 25 12

5、题图为一无向图,分别写出从顶点1出发,按深度优先搜索遍历算法得到的顶点序列,和按广度优先搜索遍历算法得到的顶点序列

Screen Shot 2016-10-20 at 21.48.52.png

解析

根据深度优先定义,先访问1,依次是2、3、4、5、6,注意是无向图。广度优先是一层一层访问,即123564,答案为123456 123564 

答案: 123456 123564

其他课后题

1

2

解析:若一个无向图有n个顶点和n-1条边,可以使它连通但没有环(即生成树)。再加一条边,在不考虑重边的情况下,必然会构成环。

3

4(2011年计算机联考真题)

5

解析:

6(2009年计算机联考真题)

解析:

无向图的全部顶点的度之和等于边数的两倍。

...... ( 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. ...... 二、填空题(每空1分,共20分) 1. 有 邻接矩阵 、 邻接表 等存储结构,遍历有 深度优先遍历 、 广度优先遍历 等方法。 2. 有向G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的 出度 。 3. 如果n个顶点的是一个环,则它有 n 棵生成树。 4. n个顶点e条边的,若采用邻接矩阵存储,则空间复杂度为 O(n2) 。 5. n个顶点e条边的,若采用邻接表存储,则空间复杂度为 O(n+e) 。 ....... 1. 【严题集7.1①】已知如所示的有向给出该的: 每个顶点的入/出度; 邻接矩阵; 邻接表; 逆邻接表。 2. 【严题集7.7②】下图的无向带权写出它的邻接矩阵,并按普里姆算法求其最小生成树写出它的邻接表,并按克鲁斯卡尔算法求其最小生成树。 ........ 五、算法设计题(每题10分,共30分) 1. 【严题集7.14③】编写算法,由依次输入的顶点数目、弧的数目、各顶点的信息和各条弧的信息建立有向的邻接表。 解:Status Build_AdjList(ALGraph &G) //输入有向的顶点数,边数,顶点信息和边的信息建立邻接表 { InitALGraph(G); scanf("%d",&v); if(v<0) return ERROR; //顶点数不能为负 G.vexnum=v; scanf("%d",&a); if(a<0) return ERROR; //边数不能为负 G.arcnum=a; for(m=0;m<v;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))nextarc;q=q->nextarc); q->nextarc=p; } p->adjvex=j;p->nextarc=NULL; }//while return OK; }//Build_AdjList 2. 【严题集7.15③】试在邻接矩阵存储结构上实现的基本操作:DeleteArc(G,v,w)。 (刘提示:删除所有从第i个顶点出发的边的方法是 将邻接矩阵的第i行全部置0 ) ........
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值