数据结构考试题2教程文件.docx

上传人:王** 文档编号:1343474 上传时间:2024-06-20 格式:DOCX 页数:11 大小:32.40KB
下载 相关 举报
数据结构考试题2教程文件.docx_第1页
第1页 / 共11页
数据结构考试题2教程文件.docx_第2页
第2页 / 共11页
数据结构考试题2教程文件.docx_第3页
第3页 / 共11页
数据结构考试题2教程文件.docx_第4页
第4页 / 共11页
数据结构考试题2教程文件.docx_第5页
第5页 / 共11页
数据结构考试题2教程文件.docx_第6页
第6页 / 共11页
数据结构考试题2教程文件.docx_第7页
第7页 / 共11页
数据结构考试题2教程文件.docx_第8页
第8页 / 共11页
数据结构考试题2教程文件.docx_第9页
第9页 / 共11页
数据结构考试题2教程文件.docx_第10页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构考试题2教程文件.docx》由会员分享,可在线阅读,更多相关《数据结构考试题2教程文件.docx(11页珍藏版)》请在优知文库上搜索。

1、数据结构考试题2要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。每张答题纸都要写上姓名和学号。一、单项选择题(每小题1.5分,20小题,共计30分)1 .以下数据结构中属非线性结构。C.BO(4)D.O(log2n)A.栈B.串队列D.平衡二叉树2 .以下算法的时间更杂度为。voidfunc(intn)inti=0zs=0;while(sprior-next=p-nextp-next-prior=p-prior;B.p-prior=p-prior-prior;p-prior-prior=p;C.p-next-prior=p;p-next=p-next-next;D.p-next=p-

2、prior-prior;p-prior=p-prior-prior;4 .设n个元素进栈序列是1、2、3n,其输出序列是小、p2p11,若p=3,则p2的值为oA.一定是2B.一定是1C.不可能是1D.以上都不对5 .在数据处理过程中常需要保存一些中间数据,如果要实现后保存的数据先处理,则应采用来保存这些数据。A.线性表B.栈C.队列D.单链表6 .中缀表达式a*(b+c)-d的对应的后缀表达式是oC.abc*+d-A.abed*+-B.abc+*d-D.-+*abcd7 .设栈S和队列q的初始状态都为空,元素a、b、c、d、e和f依次通过栈s,一个元素出栈后即进入队列q,若6个元素出队的序列

3、是b、d、c、f、e、a,则栈s的容量至少应该存多少个元素?A.2B.3C.4D.58 .设循环队列中数组的下标是ONT,其队头队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为OA.r-fB.r-f-1C.(rf)%N+lD.(r-f+N)%N9 .若将n阶上三角矩阵A按列优先顺序压缩存放在一维数组Bl.n(n+I)2中,A中第一个非零元素山存于B数组的b中,则应存放到bk中的非零元素知(lm均大于1),且所有数据元素均不相同。假设A、B均采用带头节点的单链表存放,设计一个尽可能高效的算法判断B是否为A的一个子序列,并分析你设计的算法的时间复杂度和空间复杂度。(

4、15分)2 .假设二叉树b采用二叉链存储结构存储,试设计一个算法,输出该二叉树中从根节点出发的第一条最长的路径长度,并输出此路径上各节点的值。并分析你设计的算法的时间复杂度和空间免杂度。(15分)3 .假设一个无向图是非连通的,采用邻接表作为存储结构,试设计一个算法,输出图中各连通分量的节点序列。(10分)四、附加题(10分)说明:附加题不计入本次期未考试总分,但计入本课程的总分。假设一个图G采用邻接表作为存储结构,设计一个算法,判断该图中是否存在回路。“数据结构”考试试题(八)参考答案要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。每张答题纸都要写上姓名和学号。一、单项选择题(每小

5、题1.5分,共计30分)1.D2.B3.A4.C5.B6.B7.B8.D9.D10.C11.A12.A13.A14.D15.C16.D17.C18.D19.C20.C二、问答题(共3小题,每小题10分,共计30分)1 .解:依题意,设n为总的节点个数,no为叶子节点(即度为0的节点)的个数,则有:n=no+n+n2+,+nm又有:n7二度的总数,即,n-l=nl+n22+nmm两式相减得:l=n(rn2-(m-l)nm则有:n0=1+112+2n3+(m-1)nm=l+(-l)l。2 .答:(1)本题构造的二叉排序树如图10.20所示。2 2)D的有序序列为b的中序遍历次序,即:1、3、5、7

6、、8、9、10、12、13。(3)为了删除节点12,找到其左子树中的最大节点10(其双亲节点为8),将该节点删除并用10代替12,删除后的树结构如图10.21所示。图10.20一棵二叉排序树图10.21删除12后的二叉排序树3 .答:该数组一定构成一个堆,递增有序数组构成一个小根堆,递减有序数组构成一个大根堆。以递增有序数组为例,假设数组元素为k11k2%是递增有序的,从中看出下标越大的元素值也越大,对于任一元素ki,有kik2i,kik2i+(inext,*q=B-next;while(p!=NU1.1.&q!=NU1.1.)找两个单链表中第一个值相同的节点if(p-datadata)p=p

7、-next;elseif(p-dataq-data)q=q-next;break;while(!=NU1.1.&q!=NU1.1.&p-data=q-data)(当两者值相等时同步后移p=p-next;q=q-next;)if(q=NU1.1.)当B中节点比较完毕返回1return1;else否则返回Oreturn0;)本算法的时间复杂度为O(m+n),空间复杂度为0(1)。其中m、n分别为A、B单链表的长度。2. (15分)解:由于二叉树中最长路径一定是从根节点到某个叶子节点的路径,可以求出所有叶子节点到根节点的逆路径,通过比较长度得出最长路径,可以采用多种解法。算法中用形参maxpath数

8、组存放最长路径,maxpathlen存放最长路径长度。解法1:对应的算法如下:voidMaxPath(BTNode*b,ElemTypemaxpath,intSmaxpathlen)InaXPathlen的初值为Ostructsnode(BTNode*node;存放当前节点指针intparent;/存放双亲节点在队列中的位置QuMaxSize;定义非循环队列ElemTypepathMaxSize;/存放一条路径intpathlen;/存放一条路径长度intfront,rear,pzi;/定义队头和队尾指针front=rear=-l;置队列为空队列rear+;Qurear.node=b;根节点指

9、针进进队Qurear.parent=-l;根节点没有双亲节点while(frontlchild=NU1.1.&b-rchiId=NU1.1.)*b为叶子节点p=front;pathlen=O;while(Qup.parent!=-l)(pathpathlen=Qup.node-data;pathlen+;P=Qup.parent;)pathpathlen=Qup.node-data;pathlen+;if(pathlenmaxpathlen)通过比较求最长路径for(i=0;ilchild!=NU1.1.)左孩子节点进队rear+;Qurear.node=b-lchild;Qurear.parent=front;if(b-rchild!=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!