1、1“数据结构”期末考试试题一、单选题(每小题 2分,共 12分)1在一个单链表 HL中,若要向表头插入一个由指针 p指向的结点,则执行( )。A HLps p 一nextHLB p 一nextHL;HLp3C p 一nextHl;pHL;D p 一nextHL 一next;HL 一nextp;2n 个顶点的强连通图中至少含有( )。A.nl条有向边 B.n 条有向边C.n(n1)2 条有向边 D.n(n 一 1)条有向边3.从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。A.O(1) B.O(n)C.O(1Ogzn) D.O(n2)4由权值分别为 3,8,6,2,5 的叶子结点生成
2、一棵哈夫曼树,它的带权路径长度为( )。A24 B48C 72 D 535当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。A.整形 B.引用型C.指针型 D.常值引用型6向一个长度为 n的顺序表中插人一个新元素的平均时间复杂度为( )。AO(n) BO(1)CO(n2) DO(10g2n)二、填空题(每空 1分,共 28分)1数据的存储结构被分为、和四种。2在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为域和域。3中缀表达式 3 十 x*(2.456)所对应的后缀表达式为。4在一棵高度为 h
3、的 3叉树中,最多含有结点。5假定一棵二叉树的结点数为 18,则它的最小深度为,最大深度为6在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定该结点的值,右子树上所有结点的值一定该结点的值。7当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层调整,直到被调整到位置为止。8表示图的三种存储结构为、和。9对用邻接矩阵表示的具有 n个顶点和 e条边的图进行任一种遍历时,其时间复杂度为,对用邻接表表示的图进行任一种遍历时,其时间复杂度为。10从有序表(12,18,30,43,56,78,82,95)中依次二分查找 43和 56元素时,其查找长度分别为和11假定对长度 n144 的线性表进
4、行索引顺序查找,并假定每个子表的长度均为 ,则进行索引顺序查找的平均查找长度为,时间复杂度为12一棵 B树中的所有叶子结点均处在上。13每次从无序表中顺序取出一个元素,把这插入到有序表中的适当位置,此种排序方法叫做排序;每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做排序。14快速排序在乎均情况下的时间复杂度为,最坏情况下的时间复杂度为。 三、运算题(每小题 6分,共 24分)21假定一棵二叉树广义表表示为 a(b(c,d),c(,8),分别写出对它进行先序、中序、后序和后序遍历的结果。先序:中序;后序:2已知一个带权图的顶点集 V和边集 G分别为:V0,1,2
5、,3,4,5;E=(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(4,5)10,则求出该图的最小生成树的权。最小生成树的权;3假定一组记录的排序码为(46,79,56,38,40,84,50,42),则利用堆排序方法建立的初始堆为。4有 7个带权结点,其权值分别为 3,7,8,2,6,10,14,试以它们为叶子结点生成一棵哈夫曼树,求出该树的带权路径长度、高度、双分支结点数。带权路径长度: 高度: 双分支结点数:。四、阅读算法,回答问题(每小题 8分,共 16分)1VOldAC(List25);InsertFront(L,50);Inta
6、L45,8,12,15,36;for(inti0; idataX)return 1; 根结点的层号为 1向子树中查找 x结点elseint clNodeLevel(BT 一left,X);if(cl1)return cl+1;int c2 ;if;若树中不存在 X结点则返回 oelse return 0;六、编写算法(8 分)按所给函数声明编写一个算法,从表头指针为 HL的单链表中查找出具有最大值的结点,该最大值由函数返回,若单链表为空则中止运行。EIemType MaxValue(LNOde*HL);“数据结构”期末考试试题答案一、单选题(每小题 2分,共 12分)评分标准;选对者得 2分,
7、否则不得分。1B 2B 3C 4D 5B 6A二、填空题(每空 1分,共 28分)1顺序结构 链接结构 索引结构 散列结构(次序无先后)2值(或 data) 子表指针(或 sublist)33 x 24 56 一*十4(3 h一 1)25 5 186小于 大于(或大于等于)7向上 堆顶8邻接矩阵 邻接表 边集数组(次序无先后)9O(n 2) O(e)10 1 31113 O( )12同一层13插人 选择14O(nlog 2n) O(n2)三、运算题(每小题 6分,共 24分)1先序:a,b,c,d,e,f,e 2 分中序:c,b,d,a,f,8,e 2 分4后序:c,d,b,e,f,e,a 2
8、 分2最小生成树的权:31 6 分3(84,79,56,42,40,46,50,38) 6 分4带权路径长度:131 3 分高度:5 2 分双分支结点数:6 1 分四、阅读算法,回答问题(每小题 8分,共 16分)评分标准:每小题正确得 8分,出现一处错误扣 4分,两处及以上错误不得分。1(36,12,8,50,25,5,15)25 15 8 6 20 28五、算法填空,在画有横线的地方填写合适的内容(每小题 6分,共 12分)1feturn mid 2 分returnBinsch(A,low,mid 一 1,K) 2 分returnBmsch(A,mid+1,high,K) 2 分2Node
9、Level(BT 一right,X) 3 分(c2=1)returnc2十 1 3 分六、编写算法(8 分)评分标准:请参考语句后的注释,或根据情况酌情给分。ElemType MaxValue(LNodeO* HL。)if (HL=NUlL) 2 分cerrdata; 3 分LNOde*p=HI一next; 4 分while(P!:NULL) 7 分if(maxdata)maxp 一data;pp 一next;returnmax; 8 分一、 单项选择题(本大题共 15 小题,第小题 2 分,共 30 分)在每小题列出的四个选项中只有一个符合题目要求,请将其代码填在题后的括号内。错选或未选均无
10、分。1. 算法必须具备输入、输出和 C A. 计算方法 B. 排序方法C解决问题的有限运算步骤 D. 程序设计方法2. 有 n 个节点的顺序表中,算法的时间复杂度是 O(1)的操作是 A A. 访问第 i 个节点(1in)B. 在第 i 个节点后插入一个新节点( 1i n)C. 删除第 i 个节点(1in)5D. 将 n 个节点从小到大排序3单链表的存储密度 C A大于 1 B. 等于 1C小于 1 D. 不能确定4设将整数 1,2,3,4,5 依次进栈,最后都出栈,出栈可以在任何时刻(只要栈不空)进行,则出栈序列不可能是 B A23415 B. 54132C23145 D. 154325.
11、循环队列 SQ 的存储空间是数组 dm,队头、队尾指针分别是 front 和 rear,则执行出队后其头指针 front 值是 D Afront=front+1 B. front=(front+1)%(m-1)C. front=(front-1)%m D. front=(front+1)%m6. 在一个具有 n 个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是 BA. O(1) B. O(n) C. O(n2) D. O(nlogn)7. 设二维数组 A0.m-10.n-1按行优先顺序存储,则元素 Aij的地址为 BA LOC(A00)+(i*m+j) B LOC(A00)+(i
12、*n+j)C. LOC(A00)+(i-1)*n+j-1 D. LOC(A00)+(i-1)*m+j-1 8. 一个非空广义表的表头 D A一定是子表 B. 一定是原子C不能是子表 D. 可以是原子,也可以是子表69具有 n 个节点的完全二叉树的深度为 A Alog 2(n+1) -1 B. log2n+1 C. log2n D. log2n10. 若要惟一地确定一棵二叉树,只需知道该二叉树的 D A前序序列 B. 中序序列C前序和后序序列 D. 中序和后序序列11在一个无向图中,所有顶点的度数之和等于图的边数的 倍 C A1/2 B. 1C. 2 D. 412. 拓扑排序运算只能用于 C A
13、带权有向图 B. 连通无向图C有向无环图 D. 无向图13在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是 DA希尔排序 B. 冒泡排序C插入排序 D. 选择排序14下列排序算法中时间复杂度不受数据初始状态影响,恒为 O(n2)的是 CA堆排序 B. 冒泡排序C直接选择排序 D. 快速排序15二分查找要求节点 A 7A有序、顺序存储 B. 有序、链接存储C无序、顺序存储 D. 无序、链接存储二、 填空题(本大题共 10 小题,每小题 2 分,共 20 分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。16数据的逻辑结构分为两大类,它们是线性结构和 非线性结构 。
14、17在单链表中(假设结点指针域名称为 next) ,删除指针 P 所指结点的后继结点的语句是 p-next=p-next-next 。18已知循环队列用数组 datan存储元素值,用 front,rear 分别作为头尾指针,则当前元素个数为 (rear-front+n)%n 。19 若 n 为主串长,m 为子串长,则串的朴素匹配算法最坏的情况下需要比较字符的总次数为_(n-m+1)m_ _。20 广义表(a),(b),j,(d)的表尾是_(b),j,(d)_ _。21 已知二叉树有 61 个叶子节点,且仅有一个孩子的节点数为 45,则总节点数为_166 _。22 解决计算机与打印机之间速度不匹
15、配问题,须要设置一个数据缓冲区,应是一个 队列 结构。23 n 个顶点 e 条边的图采用邻接表存储,深度优先遍历算法的时间复杂度为_O(n+e)_。24 对于 n 个关键字的集合进行冒泡排序,在最坏情况下所需要的时间为 _O(n 2)_。25在一个长度为 n 的顺序表中的第 i 个元素(1i n)之前插入一个元素时,需向后移 n-i+1 个元素。三、 解答题(本大题共 4 小题,共 25 分)26. 对于下面的稀疏矩阵,画出其三元组法存储表示(假设下标从 0 开始) 。 (5 分)80123450 0 14 0 0 00 0 0 0 -6 07 0 0 0 0 240 0 0 18 0 00
16、15 0 0 0 0答案:27. 已知一棵二叉树的中序序列和后序序列分别如下,请画出该二叉树。 (5 分)中序序列:D I G J L K B A E C H F后序序列:I L K J G D B E H F C A答案:28 设有一个关键码的输入序列55,31,11,37,46,73,63,02,07 , (7 分)(1) 从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。(3 分)(2) 计算该平衡二叉搜索树在等概率下的搜索成功的平均搜索长度和搜索不成功的平均搜索长度。(4 分)0 2 141 4 -62 0 72
17、5 243 3 184 1 15行号 列号 值AB CD E FHGJKIL929 已知一个图的邻接表如下所示。 (8 分)(1) 画出该图的图形;(4 分)(2) 根据邻接表分别画出从顶点 a 出发进行深度优先和广度优先遍历所生成的生成树。(4 分)答案:四、 算法阅读题(本大题共 3 小题,每小题 5 分,共 15 分)30设线性表的 n 个结点定义为(a 0,a1,an-1) ,在顺序表上实现的插入和删除算法如下,请在空白处填入适当内容。(顺序表的最大可容纳项数为 MaxSize)Template int SeqList:Insert(Type Else Last+;For(int j=
18、last;ji;j-) dataj= (2) ;(3) ;Return 1;Template int seqList:Remove(Type abcdef 125 5 5 24 3 10if(i=0) last-;for (int j= (4) ;jtop!=StackSize-1)s-data+s-top=x;DataType Pop(SeqStack *s)if(s-top!=-1)return s-datas-top-;void main( )DataType i;SeqStack s;s.top=-1;scanf(“%d”,while(i!=-1)push(scanf(“%d”,while(s-top!=-1)C