1、上数据结构期末图习题答案2014上数据结构期末复习大纲一、 期中前以期中考试试卷复习,算法要真正理解二、 二叉树、图、排序算法将是考试重点(占60%左右)三、 要掌握的算法1.二叉树的链表表示2.建立二义树的链表存储结构3.先序、中序、后序遍历二叉树(递归算法)4.遍历算法的应用(如求二叉树的结点数)5.建立huff man树和huff man编码6.图的邻接矩阵表示和邻接链表表示7.图的深度优先遍历和广度优先遍历算法8.有向图求最短路径(迪杰斯特拉算法)9.直接插入排序算法10.shell排序(排序过程) 12堆排序(排序过程)练习题A- 14B. 28C561122.有8个结点的无向连通图
2、最少有 C条边。A. 5B. 6C. 73.有8个结点的有向完全图最多有 C条边。A. 14B28C561.有8个结点的无向图最多有B 条边。D.D. 8D.1124.用邻接表表示图进行广度优先遍历时,通常是采用B 算法的。来实现A.栈B 队列C.树D.图5.用邻接表表示图进行深度优先遍历时,通常是采用 来实现算法的。A.栈B 队列C树 D图0 11110 0 110 0 0110 010 110 0 0 1110 0I 00 01 0I 10 11 00 11100010A.0 2 4 3 1 5 6B.0 1 3 6 5 4 2C.0 4 2 3 1 6 56.已知图的邻接矩阵,根据算法思
3、想,则从顶点0出发按深度优先遍历的结点序列是*( C )7.已知图的邻接矩阵同上题,根据算法,则从顶点0出发,按深度优先遍历的结点序列是( D )A. 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2 C. 0 4 2 3 1 6 5 D.0 1 3 4 2 5 68.已知图的邻接矩阵同上题6,根据算法,则从顶点0出发,按广度优先 遍历的结点序列是(B )A. 0 2 4 3 6 5 1 B. 0 1 3 6 4 2 5 C. 0 4 2 3 1 5 6 D.0 1 3 4 2 5 69.已知图的邻接矩阵同上题6,根据算法,则从顶点0出发,按广度优先遍历的结点序列是( C )A.
4、0 2 4 3 1 6 5 B. 0 1 3 5 6 4 2 C. 0 1 2 3 4 6 5 D. 0 1 2 3 4 5 610.从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其 放入已排序序列的正确位置上的方法,这种排序方法称为(C )。A.归并排序 B.冒泡排序 C.插入排序 D.选择排序11.从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空) 的一端的方法,称为( D ) oA.归并排序 B.冒泡排序 C.插入排序 D.选择排序12.对n个不同的排圧码进行冒泡排序,在元素无序的情况下比较的次数最多为(D ) oA n+1 B . n C . nlD. n(nl
5、)/213.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为(C ) OA.38, 40, 46,56, 79, 84B 40, 38, 46, 79, 56,84C.40, 38, 46,56, 79, 84D. 40, 38, 46, 84, 56,7914.堆是一种(B )排序。A.插入B.选择C.交换 D.归并15.若一组记录的排序码为(46,79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为(B ) oA.79,46,56,38,40,84B. 84,79,56,38,40,46C
6、.84,79,56,46,40,38D. 84,56,79,40,46,38二、填f空题(每空1分,共20分)1.图有 邻接矩阵、 邻接表 等存储结构,遍历图有 深度优先遍 历、广度优先遍历等方法。2.有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的 出度3.n个顶点e条边的图,若采用邻接矩阵存储,则空间复杂度为0 (rf) o4.n个顶点e条边的图,若采用邻接表存储,则空间复杂度为0 (n+e) o5.设有一稀疏图G,则G采用 邻接表 存储较省空间。6.设有一稠密图G,则G采用 邻接矩阵 存储较省空间。7.图的逆邻接表存储结构只适用于 有向 图。8.图的深度优先遍历序列 不是 惟
7、一的。个顶点e条边的图采用邻接矩阵存储,深度优先遍历算法的时间复杂度为0();若采用邻接表存储时,该算法的时间复杂度为0(n+e) 。10.n个顶点e条边的图采用邻接矩阵存储,广度优先遍历算法的时间复杂度为 0() ;若采用邻接表存储,该算法的时间复杂度为0(n+e)11.用Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度递增 的次序来得到最短路径的。三、简答题.1.已知如图所示的有向图,请给出该图的:(1)每个顶点的入/出度;(2)邻接矩阵;邻接表;(4)逆邻接表。2.已知一个无向图的邻接表如图2所示,要求:(1) 画出该无向图;(2) 根据邻接表,分别写出用DFS(深度优
8、先搜索)和BFS (广度优先搜索)算法从顶点V0开始遍历该图后所得到的遍历序列。冷1 C 丙1 ”1人(7 -fcfc 主右皿答(1)(2)根据该无向图的邻接表表示,从顶点V0开始的深度优先遍历序列为:V0、V2、V3、VI、V4、V6、V5。广度优先遍历序列为 VO、V2、V5、V6、VI、V3、 V4o3.、图3所示为一个有向网图及其带权邻接矩阵,要求对有向图采用Dijkstra算法,求从V0到其余各顶点的最短路径,写出执行算法过程中各步的状态。0 oo io oo 30100OO Q 5 8 OO(b)带权邻接3、求解过程如下表所示。线占从V0到各终点的D值和最短路径的求解过程i=li
9、二2i 二3i=4i=5VIOOOOOOOOOO无V210(v0,v2)V36050oo(vO, v2,(vO, v4, v3)v3)V43030(vO, v4(v0, v)4)V51001009060(vO, v4, v5)(vO, v4, v3, v5(v0, v(vO, v5)5)VjV4V3V5V2SvO, v2, v3, vvO, v2, v3, v4vO, vvO, v2,4,v52v44.设待排序的关键字序列为12, 2, 16, 30, 28, 10, 16*, 20, 6, 18, 试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。(1) .直接插入排序(2) 希尔
10、排序(增量选取5, 3, 1)(3) 快速排序(1)直接插入排序2121630281016*206182121630281016*206182121630281016*206182121628301016*206182101216283016*20618210121616*283020618210121616*2028306182610121616*2028301826101216 16*18202830(2)希尔排序(增量选取5,3, 1)102166181216*203028(增量选取5)621210181616*203028(增量选取3)2610121616*1820 2830 (增量选
11、取1)(3)快速排序枢轴126 2 10 12 28 30 16* 20 16 1828261012181616*20 2830 1826101216*161820283016*26101216*16182028306 610 12 28 3016* 2016 18 5.设待排序的关键字序列为30, 60, 8, 40, 70, 12, 10,试使用堆排序,(1)画出将无序数据建成初始堆的图,(2)画出将第二个数排定顺序时的堆的图。答(1)初始堆序列 为70 60 12 40 30 8 10(2)四、程序填空题1、根据有向图的邻接矩阵求出序号为numb的顶点的度数(邻接矩阵可参 考简答题第三题
12、),请填写算法中下划线的空白处。int degree2(Graph & ga, int numb) int i,j,d=0;半查找法查找关键字(key)为k的记录。如果查找失败,则输出“失 败”,函数返回值为0:否则输出“成功”,函数返回值为该记录的序号 值。Int binary_search(struet recordtype r ,int n ,keytype k)/* rl.n为N个记录的递增有序表,k为关键字*/ int mid, low=l, hig=n;while( 1ow=hig) mid=(low+hig) /2;i f (khigh) printf (失败”);return
13、(0);3.建立huff man树void HuffmanCoding(HuffmanTree &HT, int *w, int n) eight二*w;(*p). parent二0;(*p). lchild二0;(*p). rchild=0;for(:i=m;+i, +p)(*p). parent二0;for(i=n+l:i=m;+i) arent二二I; ht s2. parent=I;hti. lchild二si;ht i.lchild二s2;hti. weight二htsi. weight+hts2. weight;六.编程题1期中考试二个程序题(循环队列入队出队、用栈处理进制转换(P
14、48算 法)2.以二叉链表作为二叉树的存储结构,编写以下算法:(看实习题)(1)写出先序、中序、后序遍历二叉树的递归算法;(1)统计二叉树的结点个数。3.带头结点的单链表的插入和删除算法。(书上P30算法,)答.1.期中循环队列入队出队ttdefine MAX 20typedef struet int quMAX;int rear, length;Queue;Int EnQueue( Queue &q, int e) if (二二MAX) return T;=+l)%max;二+1; =e;return 1;Int DeQueue ( Queue &q, int &e) int front;if( =0) return -1;front:=+l+%max;e=front;return 1;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1