软件工程数据结构期末试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华南农业大学期末考试试卷(A卷)
2004学年第1学期考试科目:数据结构(04软件工程)
考试类型:(闭卷)考试时间:120分钟
学号姓名年级专业
说明:1 本试卷的答案必须写在答题卡上,答题卡同时写上专业、班级、学号、姓名;
一、选择题(每题2分,共30分)
1.hh设子串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返
回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则
con( subs (s1,2,len(s2), subs(s1,len(s2),2) )的结果串是()
A.BCDEF B.BCDEFG
C.BCPQRST D.BCDEFEF
2.某堆栈的输入序列为a,b,c,d,下面的四个序列中,_________不可能是它的输出序列。
A.a,c,b,d B.b,c,d,a
C.c,d,b,a D.d,c,a,b
3.将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为_________.
A.0(1)B.0(n)
C.0(m)D.0(m+n)
4.长度为n(1…n)的顺序循环队列中,front和rear分别指示队首和队尾。判断队列满的条件
为_________.
A.rear%n=front B.front%n+1=rear
C.rear%n-1=front D.rear%n+1=front
5.设二叉树有2n个结点,则对于m A.n个度为0 B.2m个度为0 C.2m个度为1 D.2m个度为2 6.某n>0个结点的二叉树的先序序列正好相反,则该二叉树一定不是_________的二叉树。 A.任一结点无左孩子B.任一结点无右孩子 C.深度为n D.存在度为2的结点 7.二叉树用二叉链表表示,若要将其所有结点的左,右子树相互交换位置,则采用下列——遍 历的方法较为合适。 A.先序B.中序C.后序D.按层 8.对于二叉树的两个结点X和Y,应该选择_________两个序列来判断X是否Y 的祖先。 A.先序和后序B.先序和中序 C.中序和后序D.任意两个序列都行 9.最小生成树指的是连通图中_________. A.边数最少的生成树B.顶点相对较少的生成树 C.极小连通子图D.所有生成树中权值之和最小的生成树 10.具有n个顶点的强连通图至少有_________条弧。 A.n-1 B.n C.2n D.n(n-1) 11.对20 个有序记录进行折半查找,查找成功的平均查找长度为_________. A.5 B.37/10 C.39/10 D.41/10 12.哈希表长度为m,哈希函数H(K)=K%P,一般来说P应取小于m的最大_________. A.奇数B.偶数 C.素数D.合数 13.对动态查找有高效率的查找表组织结构是_________. A.有序表B.分块有序表 C.循环链表 D B-树 14.当初始数据有序时,不应采用_________. A.堆排序B.快速排序 C.基数排序D.希尔排序 15.在n个元素中找出两个最小的元素,当n很大时,采用_________方法比较次数较少。 A.树型选择排序B.简单选择排序 C.归并排序D.快速排序 二、填空题(每空1分,共15分) 1.一个算法的效率可分为效率和效率。 2.向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 ________个元素。 3.在具有n个单元的循环队列中,队满时共有个元素。 4.假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起 始存储位置(基地址)为1000,则数组A的体积(存储量)为;末尾元素A57的第一个字节地址为;若按行存储时,元素A14的第一个字节地址为;若按列存储时,元素A47的第一个字节地址为。 5.设一棵完全二叉树具有1000个结点,则此完全二叉树有个叶子结点,有个 度为2的结点,有个结点只有非空左子树,有个结点只有非空右子树。 6.10、线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法 检索表中与k相等的元素,在查找不成功的情况下,最多需要检索次。设有100个结点,用二分法查找时,最大比较次数是。 7.散列法存储的基本思想是由决定数据的存储地址。 三、应用题(共40分) 1.假设一棵二叉树的层次遍历序列是ABCDEFGHIJ和中序遍历序列是DBGEHJACIF,请画出该 树。(5分) 2.已知一个图的顶点为A、B、C、D,其邻接矩阵的上三角元素全为0(包括主对角线元素), 其他元素均为1。请画出该图,并给出其邻接表。(5分) 3.给定权值{8,12,4,5,26,16,9},构造一棵带权路径长度最短的二叉树,并计算其带 权路径长度。(6分) 4.使用Prim算法构造出如下图所示的的最小代价生成树,并将过程写出。(6分) 图G 5.判别序列(42 13 91 23 24 16 05 88)是否为堆,如果不是,则把它调整为堆。使之 按关键字递减次序排列。请写出排序过程中得到的初始堆和一趟排序后的序列状态。(6分) 6.设有一组关键字{19, 01, 23, 14, 55, 20, 84, 27, 68, 11, 10, 77},采用哈希函数: :H(key) = key MOD 13,,采用开放地址法的二次探测再散列方法解决冲突,试在1~18的散列地址空间中对该关键字序列构造哈希表,并求该表的平均查找长度ASL。(6分) 7.用序列(46,88,45,39,70,58,101,10,66,34)建立一个排序二叉树,画出该树,并 求在等概率情况下查找成功的平均查找长度。(6分) 三、算法题(15分) 1.算法分析题(5分) 阅读下面算法: (1)简要说明程序功能。(3分) (2)假设二叉排序树*bst是有n个结点的满二叉树,给出算法的时间复杂度。(2分) int Proc (BSTree *bst, KeyType K) { BSTree f, q, s; s=(BSTree)malloc(sizeof(BSTNode)); s-> key = K; s-> lchild = NULL; s-> rchild = NULL; if ( *bst == NULL ) { *bst = s; return 1; }