您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 初中教育 > 2011《数据结构》期末试卷-A卷(答案)
1一、(本题10分)(1)线性表和广义表的主要区别是什么?(2)已知广义表:C=(a,(b,(a,b)),((a,b),(a,b))),则tail(head(tail(C)))=?答案:(1)线性表和广义表都是元素a1,a2,…,an组成的序列,其主要区别点在于:在线性表中,ai是单个元素(原子);在广义表中,ai可以是单个元素(原子),也可以是广义表。(7分)(2)tail(head(tail(C)))=((a,b))(3分)二、(本题10分)简述二叉树的两种存储结构(顺序存储和链式存储)的数据结构及主要优缺点。在哈夫曼树中,使用哪种存储结构,并说明理由。答案:顺序存储结构:typedefSqBiTree[Max_Tree_Size];特点:使用数组存储二叉树上的结点元素,按照对应的完全二叉树的编号来存储二叉树。优点是适用于完全二叉树,访问方便。缺点是对于一般二叉树,较大地浪费了空间。(4分)链式存储结构:typedefstrutBiTNode{TElemTypedata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;特点:使用结构体来表示结点元素,使用指针来指向结点的左右孩子。优点是插入与删除方便,节省空间,缺点是不能快速地随机访问结点元素。(4分)在哈夫曼树中,使用静态三叉链表,这样可以方便地从根走到叶子,也可以从叶子走到根,而且可以随机访问和节省空间。(2分)三、(本题10分)一棵二叉树的先序、中序和后序序列分别如下,其中有一部分未显示出来,试求出空格处的内容,并画出该二叉树。先序序列:__B__F__ICEH__G;中序序列:D__KFIA__EJC__;后序序列:__K__FBHJ__G__A。答案:先序序列:ABDFKICEHJG中序序列:DBKFIAHEJCG后序序列:DKIFBHJEGCA(11分)画出树得4分。厦门大学《_数据结构_》课程期末试卷信息科学与技术学院计算机科学系2009年级___专业主考教师:陈怡疆庄朝晖试卷类型:(A卷)2四、(本题10分)分别使用普里姆算法和克鲁斯卡尔算法求出图G1的最小生成树,仅需画出最小生成树的成长过程即可。答案:(1)普里姆算法求最小生成树的过程如下:5分012345101234513012345143ABCDEHJFGKI0123451452566637图G13(2)克鲁斯卡尔算法如下:5分五、(本题10分)有向图G2如上所示,(1)请写出图G2所有可能的拓扑序列:(2)请写出以顶点B为起始点的深度优先遍历序列和广度优先遍历序列,并画出对应的生成树。遍历过程中当有多种选择时,编号小的结点优先。答案:(1)BACDE、BACED、BCADE、BCAED(5分,少一个扣一分)(2)深度优先遍历序列:BADEC(3分)012345145230123451423012345123012345120123451012345145301234514523ABCDE图G24广度优先遍历序列:BACDE(3分)六、(本题15分)已知键值序列为{45,56,83,31,72,35,14,47,89,19},要求给出:(1)按键值排列次序构造一棵二叉排序树。(2)在等概率的情况下,求出该二叉排序树查找成功的平均查找长度。(3)针对上述10个键值,在不同的排列次序下所构造出的不同形态的二叉排序树中,在最坏和最好情况下,二叉排序树的高度各是多少?答案:(1)(2)在等概率情况下,该二叉排序树的平均检索长度是:ASL=(1+2*2+3*4+4*3)/10=29/10=2.9(3)对于上述10个键值,在最坏情况下,每个结点(除了叶子结点)只有右孩子(或者只有左孩子),高度为10。在最好情况下,高度为└log210┘+1=4。七、(本题15分)设关键字序列为:49,38,66,80,70,15,22,欲对该序列进行从小到大排序。(1)用直接插入排序法进行排序,写出每趟的结果。(2)采用待排序列的第一个关键字作为枢轴,写出快速排序法的一趟和二趟排序之后的状态。(3)画出待排序列的初始化堆。答案:①直接插入排序法原始关键字序列为:(49)386680701522(3849)6680701522(384966)80701522(38496680)701522(3849667080)1522(3849667080)1522(153849667080)22(15223849667080)②快速排序法原始关键字序列为:49,38,66,80,70,15,224553156143547831972895第一趟排序后223815(49)708066第二趟排序后15(22)3866(70)80③该堆是最大堆,具体如下:八、(本题10分)假设一棵树的存储结构采用双亲表示法,双亲数组为intparent[MaxSize],其中MaxSize为最大结点个数。树中各结点按先根遍历的次序存放,根结点存于parent[0]。试编写一个函数,计算下标p所指结点和下标q所指结点的最近公共祖先结点。参考答案:intCommonAncestry(intparent[],intMaxSize,intp,intq){inti,j;for(i=p;i!=-1;i=parent[i])for(j=q;j!=-1;j=parent[j])if(i==j)returnI;}九、(本题10分)1,2,……,n这n个数,无序地保存在数组c[1..n]中。请编写一个时间复杂度为O(n)的排序算法,将数组c[1..n]按小到大排序。参考答案:voidC_sort(intc[],intn){inti,x;for(i=1;i=n;i++)while(c[i]!=i){x=c[i];c[i]=c[x];c[x]=x;}}交换O(n)次。80706638491522
本文标题:2011《数据结构》期末试卷-A卷(答案)
链接地址:https://www.777doc.com/doc-1912593 .html