《2022年数据结构试卷及答案 2.pdf》由会员分享,可在线阅读,更多相关《2022年数据结构试卷及答案 2.pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 数据结构试卷(十)一、选择题 (24 分) 1下列程序段的时间复杂度为() 。i=0 ,s=0; while (snext=p-next;p-next=-s; (B) q-next=s; s-next=p;(C) p-next=s-next;s-next=p ;(D) p-next=s;s-next=q ;4设输入序列为1、2、 3、4、5、6,则通过栈的作用后可以得到的输出序列为() 。(A) 5 ,3, 4,6,1,2 (B) 3 ,2,5,6,4,1 (C) 3 ,1, 2,5,4,6 (D) 1 ,5,4,6,2,3 5设有一个10 阶的下三角矩阵A(包括对角线) ,按照从上到下、
2、从左到右的顺序存储到连续的55 个存储单元中,每个数组元素占1 个字节的存储空间,则A54地址与 A00的地址之差为() 。(A) 10 (B) 19 (C) 28 (D) 55 6设一棵m叉树中有 N1个度数为 1 的结点, N2个度数为2 的结点,Nm个度数为m的结点,则该树中共有()个叶子结点。(A) miiNi1) 1(B) miiN1(C) miiN2(D) miiNi2) 1(17. 二叉排序树中左子树上所有结点的值均()根结点的值。(A) (C) = (D) != 8. 设一组权值集合W=(15,3,14,2,6,9,16,17) ,要求根据这些权值集合构造一棵哈夫曼树,则这棵哈
3、夫曼树的带权路径长度为() 。(A) 129 (B) 219 (C) 189 (D) 229 9. 设有 n 个关键字具有相同的Hash 函数值,则用线性探测法把这n 个关键字映射到HASH表中需要做()次线性探测。(A) n2(B) n(n+1) (C) n(n+1)/2 (D) n(n-1)/2 10. 设某棵二叉树中只有度数为0 和度数为2 的结点且度数为0 的结点数为n,则这棵二叉中共有()个结点。(A) 2n (B) n+l (C) 2n-1 (D) 2n+l 11. 设一组初始记录关键字的长度为8,则最多经过()趟插入排序可以得到有序序列。(A) 6 (B) 7 (C) 8 (D)
4、 9 12. 设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是() 。(A) F, H,C,D,P,A,M,Q,R,S,Y,X (B) P,A,C,S,Q,D,F,X,R,H,M,Y (C) A,D, C,R,F,Q,M,S,Y,P,H,X (D) H,C, Q,P,A,M,S,R,D,F,X,Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 2 二、填空
5、题 (48 分,其中最后两小题各6 分) 1.设需要对5 个不同的记录关键字进行排序,则至少需要比较_次,至多需要比较_次。2.快速排序算法的平均时间复杂度为_ ,直接插入排序算法的平均时间复杂度为_。3.设二叉排序树的高度为h,则在该树中查找关键字key 最多需要比较 _次。4.设在长度为20 的有序表中进行二分查找,则比较一次查找成功的结点数有_个,比较两次查找成功有结点数有_个。5.设一棵 m叉树脂的结点数为n,用多重链表表示其存储结构,则该树中有_个空指针域。6.设指针变量p 指向单链表中结点A,则删除结点A的语句序列为:q=p-next ;p-data= q-data ;p-next
6、=_ ; feee(q) ;7.数据结构从逻辑上划分为三种基本类型:_、_和_。8.设无向图 G中有 n 个顶点 e 条边, 则用邻接矩阵作为图的存储结构进行深度优先或广度优先遍历时的时间复杂度为_;用邻接表作为图的存储结构进行深度优先或广度优先遍历的时间复杂度为 _。9.设散列表的长度为8,散列函数H(k)=k % 7 ,用线性探测法解决冲突,则根据一组初始关键字序列(8,15,16,22,30,32) 构造出的散列表的平均查找长度是_。10.设一组初始关键字序列为(38 , 65,97,76,13, 27,10) ,则第3 趟冒泡排序结束后的结果为_。11.设一组初始关键字序列为(38 ,
7、 65,97,76,13, 27,10) ,则第3 趟简单选择排序后的结果为_。12.设有向图 G中的有向边的集合E=, ,则该图的一个拓扑序列为_ 。13.下面程序段的功能是建立二叉树的算法,请在下划线处填上正确的内容。typedef struct nodeint data;struct node *lchild;_;bitree; void createbitree(bitree *&bt) scanf(“ %c” ,&ch); if(ch=#) _;else bt=(bitree*)malloc(sizeof(bitree); bt-data=ch; _;createbitree(bt-
8、rchild); 14.下面程序段的功能是利用从尾部插入的方法建立单链表的算法,请在下划线处填上正确的内容。typedef struct node int data; struct node *next; lklist; void lklistcreate(_ *&head ) for (i=1;idata);p-next=0; if(i=1)head=q=p;else q-next=p;_; 三、算法设计题(22 分 ) 1 设计在链式存储结构上合并排序的算法。2 设计在二叉排序树上查找结点X的算法。3 设关键字序列 (k1,k2, kn-1)是堆,设计算法将关键字序列(k1,k2, kn-
9、1,x) 调整为堆。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 3 数据结构试卷(十)参考答案一、选择题1A 2 D 3B 4B 5B 6D 7A 8 D 9D 10C 11B 12 D 二、填空题1.4,10 2.O(nlog2n),O(n2) 3.n 4.1,2 5.n(m-1)+1 6.q-next 7.线性结构,树型结构,图型结构8.O(n2), O(n+e) 9.8/3 10.(38,13, 27,10,65,76
10、,97) 11.(10,13, 27,76,65,97,38) 12.124653 13.struct node *rchild ,bt=0,createbitree(bt-lchild) 14.lklist ,q=p 三、算法设计题1.设计在链式存储结构上合并排序的算法。void mergelklist(lklist *ha,lklist *hb,lklist *&hc) lklist *s=hc=0; while(ha!=0 & hb!=0) if(ha-datadata)if(s=0) hc=s=ha; else s-next=ha; s=ha;ha=ha-next; else if(s
11、=0) hc=s=hb; else s-next=hb; s=hb;hb=hb-next; if(ha=0) s-next=hb; else s-next=ha; 2.设计在二叉排序树上查找结点X的算法。bitree *bstsearch1(bitree *t, int key) bitree *p=t; while(p!=0) if (p-key=key) return(p);else if (p-keykey)p=p-lchild; else p=p-rchild; return(0); 3.设关键字序列 (k1,k2, kn-1)是堆,设计算法将关键字序列(k1,k2, kn-1,x) 调整为堆。void adjustheap(int r ,int n) int j=n,i=j/2,temp=rj-1; while (i=1) if (temp=ri-1)break; elserj-1=ri-1; j=i; i=i/2; rj-1=temp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -
限制150内