数据结构期末复习20140625(8)

2018-12-29 20:25

出发对该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列。 【解答】邻接矩阵表示如下:

深度优先遍历序列为:v1 v2 v3 v5 v4 v6 广度优先遍历序列为:v1 v2 v4 v6 v3 v5 邻接表表示如下:

8.图6-7所示是一个无向带权图,请分别按Prim算法和Kruskal算法求最小生成树。 【解答】按Prim算法求最小生成树的过程如下:

按Kruskal算法求最小生成树的过程如下:

9.对于图6-8所示的带权有向图,求从源点v1到其他各顶点的最短路径。 【解答】从源点v1到其他各顶点的最短路径如下表所示。

源点 终点 最短路径 最短路径长度

v1 v7 v1 v7 7 v1 v5 v1 v5 11 v1 v4 v1 v7 v4 13 v1 v6 v1 v7 v4 v6 16

v1 v2 v1 v7 v2 22

v1 v3 v1 v7 v4 v6 v3 25

10.如图6-9所示的有向网图,利用Dijkstra算法求从顶点v1到其他各顶点的最短路径。 【解答】从源点v1到其他各顶点的最短路径如下表所示。

源点 终点 最短路径 最短路径长度 v1 v3 v1 v3 15 v1 v5 v1 v5 15 v1 v2 v1 v3 v2 25 v1 v6 v1 v3 v2 v6 40

v1 v4 v1 v3 v2 v4 45

11.证明:只要适当地排列顶点的次序,就能使有向无环图的邻接矩阵中主对角线以下的元素全部为0。 【解答】

任意n个结点的有向无环图都可以得到一个拓扑序列。设拓扑序列为v0v1v2?vn-1,我们来证明此时的邻接矩阵A为上三角矩阵。证明采用反证法。

假设此时的邻接矩阵不是上三角矩阵,那么,存在下标i和j(i>j),使得A[i][j]不等于零,即图中存在从vi到vj的一条有向边。由拓扑序列的定义可知,在任意拓扑序列中,vi的位置一定在vj之前,而在上述拓扑序列v0v1v2?vn-1中,由于i>j,即vi的位置在vj之后,导致矛盾。因此命题正确。 12. 算法设计

⑴ 设计算法,将一个无向图的邻接矩阵转换为邻接表。

【解答】先设置一个空的邻接表,然后在邻接矩阵上查找值不为零的元素,找到后在邻接表的对应单链表中插入相应的边表结点。 邻接矩阵存储结构定义如下: const int MaxSize=10; template struct AdjMatrix {

T vertex[MaxSize]; //存放图中顶点的数组

int arc[MaxSize][MaxSize]; //存放图中边的数组 int vertexNum, arcNum; //图的顶点数和边数 };

邻接表存储结构定义如下:

const int MaxSize=10;

struct ArcNode //定义边表结点 {

int adjvex; //邻接点域 ArcNode *next; };

template

struct VertexNode //定义顶点表结点 {

T vertex;

ArcNode *firstedge; };

struct AdjList {

VertexNode adjlist[MaxSize];

int vertexNum, arcNum; //图的顶点数和边数 };

⑵ 设计算法,将一个无向图的邻接表转换成邻接矩阵。

【解答】在邻接表上顺序地取每个边表中的结点,将邻接矩阵中对应单元的值置为1。邻接矩阵和邻接表的存储结构定义与上题相同。

⑶ 设计算法,计算图中出度为零的顶点个数。

【解答】在有向图的邻接矩阵中,一行对应一个顶点,每行的非零元素的个数等于对应顶点的出度。因此,当某行非零元素的个数为零时,则对应顶点的出度为零。据此,从第一行开始,查找每行的非零元素个数 是否为零,若是则计数器加1。

⑷ 以邻接表作存储结构,设计按深度优先遍历图的非递归算法。

【解答】参见6.2.1。

⑸ 已知一个有向图的邻接表,编写算法建立其逆邻接表。

【解答】在有向图中,若邻接表中顶点vi有邻接点vj,在逆邻接表中vj一定有邻接点vi,由此得到本题算法思路:首先将逆邻接表的表头结点firstedge域置空,然后逐行将表头结点的邻接点进行转化。

⑹ 分别基于深度优先搜索和广度优先搜索编写算法,判断以邻接表存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。 【解答】⑴ 基于深度优先遍历:

⑵ 基于广度优先遍历:

三、学习自测题目

1.某无向图的邻接矩阵A=,可以看出,该图共有( )个顶点。 A .3 B. 6 C. 9 D .以上答案均不正确

【解答】A

2.无向图的邻接矩阵是一个( ),有向图的邻接矩阵是一个( ) A 上三角矩阵 B 下三角矩阵 C 对称矩阵 D 无规律 【解答】C,D

3.下列命题正确的是( )。

A 一个图的邻接矩阵表示是唯一的,邻接表表示也唯一 B 一个图的邻接矩阵表示是唯一的,邻接表表示不唯一 C 一个图的邻接矩阵表示不唯一的,邻接表表示是唯一 D 一个图的邻接矩阵表示不唯一的,邻接表表示也不唯一 【解答】B

4.十字链表适合存储( ),邻接多重表适合存储( )。 【解答】有向图,无向图

5. 在一个具有n 个顶点的有向完全图中包含有( )条边: A n(n-1)/2 B n(n-1) C n(n+1)/2 D n2 【解答】B

6.n个顶点的连通图用邻接矩阵表示时,该矩阵至少有( )个非零元素。 【解答】2(n-1)

7.表示一个有100个顶点,1000条边的有向图的邻接矩阵有( )个非零矩阵元素。 【解答】1000

8.一个具有n个顶点k条边的无向图是一个森林(n>k),则该森林中必有( )棵树。 A k B n C n - k D 1 【解答】C

9.用深度优先遍历方法遍历一个有向无环图,并在深度优先遍历算法中按退栈次序打印出相应的顶点,则输出的顶点序列是( )。 A 逆拓扑有序 B 拓扑有序 C 无序 D 深度优先遍历序列 【解答】A

10. 关键路径是AOE网中( )。

A 从源点到终点的最长路径 B 从源点到终点的最长路径

C 最长的回路 D 最短的回路 【解答】A

11. 已知无向图G的邻接表如图6-10所示,分别写出从顶点1出发的深度遍历和广度遍历序列,并画出相应的生成树。

【解答】深度优先遍历序列为:1,2,3,4,5,6 对应的生成树为:

广度优先遍历序列为:1,2,4,3,5,6 对应的生成树为:

12. 已知已个AOV网如图6-11所示,写出所有拓扑序列。

【解答】拓扑序列为:v0 v1 v5 v2 v3 v6 v4、 v0 v1 v5 v2 v6 v3 v4、 v0 v1 v5 v6 v2 v3 v4。

要点:

1.图、简单图、无向图、有向图、完全图、子图、连通图、强连通科,权、网、度,生成树等。

2.图的深度优先遍历(P150、P154),广度优先遍历(P151、P154)。 3.图的存储结构:邻接矩阵(有向、无向、带权),深度优先遍历(P154),广度优先遍历(P154)。邻接表,深度优先遍历(P158),广度优先遍历(P158)。

4.最小生成树:PRIM算法(P164),KRUSKAL算法(P167)。 5.最短路径:DIJKSTRA算法(P170-171)。 6.拓扑排序(P175-176)。

7.关键路径概念、基本思想、算法伪代码(P179)。

四、实验题

第 7 章 查找技术

一、本章主要内容

二、本章习题 1. 填空题

⑴ 顺序查找技术适合于存储结构为( )的线性表,而折半查找技术适用于存储结构为( )的线性表,并且表中的元素必须是( )。 【解答】顺序存储和链接存储,顺序存储,按关键码有序

⑵ 设有一个已按各元素值排好序的线性表,长度为125,用折半查找与给定值相等的元素,若查找成功,则至少需要比较( )次,至多需比较( )次。

【解答】1,7

【分析】在折半查找判定树中,查找成功的情况下,和根结点的比较次数最少,为1次,最多不超过判定树的深度。

⑶ 对于数列{25,30,8,5,1,27,24,10,20,21,9,28,7,13,15},假定每个结点的查找概率相同,若用顺序存储结构组织该数列,则查找一个数的平均比较次数为( )。若按二叉排序树组织该数列,则查找一个数的平均比较次数为( )。 【解答】8,59/15

【分析】根据数列将二叉排序树画出,将二叉排序树中查找每个结点的比较次数之和除以数列中的元素个数,即为二叉排序树的平均查找长度。


数据结构期末复习20140625(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:XX年村居年终总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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