《数据结构三套试卷详细分析.docx》由会员分享,可在线阅读,更多相关《数据结构三套试卷详细分析.docx(10页珍藏版)》请在第壹文秘上搜索。
1、数据结构试卷一一、单项选择题(每题2分,共20分)1 .栈和队列的共同特点是(A)。A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点Ps:栈:先进后出;队列:先进先出2 .用链接方式存储的队列,在进行插入运算时(D).A.仅修改头指针B.头、尾指针都要修改C.仅修改尾指针D.头、尾指针可能都要修改ps:新结点的插入和栈顶结点的删除都在链表的表头,即栈顶进行。如果队列为空,即第一个结点为null,那么插入时改变了头指针。3 .以下数据结构中哪一个是非线性结构?(D)A.队列B.栈C.线性表D.二叉树Ps:数据结构二逻辑结构+存储结构。二叉树属于层次关系一一树结构。4
2、 .设有一个二维数组A川,假设A00存放位置在644(10),A2存放位置在676(io),每个元素占一个空间,问A33(存放在什么位置?脚注(K)表示用10进制表示。CA.688B.678C.692D.696Ps:此题画个图即知。可知A0H2的存放位置是646,A2l的存放位置是661,因为A2的存放位置在676,可知两层之差为15,然后即可知道A33的存放位置在676+15+1=692.5 .树最适合用来表示(C)oA.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据Ps:树属于层次关系,所以可表示元素之间具有分支层次关系的数据。6 .二叉树的第k层的
3、结点数最多为(D).2-1B.2K+1C.2K-1D.2k1Ps:二叉树的性质一:在二叉树的第k(k=l)层最多有2山个结点。7 .假设有18个元素的有序表存放在一维数组A19中,第一个元素放Al中,现进行二分查找,那么查找A3的比拟序列的下标依次为(D)A.1,2,3B.9,5,2,3C.9,5,3D.9,4,2,3Ps:二分查找又称折半查找,优点是比拟次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而杳找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比拟,如果两者相等,那么查找成功;否那么利
4、用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,那么进一步查找前一子表,否那么进一步查找后一子表。重更以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。此题分析思路:首先18个元素是在有序表中的,即将它放入一维数组中的时候是有顺序的。那么,第一个比拟应该是(1+18)/2=9;第二次比拟应该是(1+9)72=4;第三次比拟应该是(1+4)/2=2,接下来就是3了。8 .对n个记录的文件进行快速排序,所需要的辅助存储空间大致为CA.0(1)B.0(n)C.0(log2n)D.0(n2)Ps:快速排序是需要一个辅助空间的,该空间的大小
5、最好为C选项,最差情况为B选项,此题选C9 .对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,假设选用H(K)=K%9作为散列函数,那么散列地址为1的元素有(D)个,A.1B.2C.3D.4Ps:散列函数即为将要进行散列存储的数进行一系列的运算,然后将它们确定在散列表中,此题只需将线性表中的数都用H(K)进行计算,然后结果为1的数有几个即为答案。%是取余。10 .设有6个结点的无向图,该图至少应有(A)条边才能确保是一个连通图。A.5B.6C.7D.8Ps:连通图是每两个结点都有一条边相连,没有任何孤立结点。所以6个结点的无向图至少应该有5条边。二、填空题(每空1分,
6、共26分)1 .通常从四个方面评价算法的质量:_止确性_、易读性一、_强壮性_和_高效率2 .一个算法的时间复杂度为(/+/1Og2+14)/2,其数量级表示为0(n)oPs:将该式化简开,可发现为n+log2+14n,里面计算最复杂的就是n,所以该算法的时间复杂度为n,用数量级表示就是0(n).3 .假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J),那么树中所含的结点数为_9个,树的深度为一3,树的度为_3oPs:根据广义表的表示可知该树的根结点为A,它有三个分支:C、D、H;D下面有EFG三个结点,H下面有IJ两个结点。由此可知结点总数为9,树的深度是层数,即为3;树的度即为
7、结点度的最大值,为3.4 .后缀算式923+-102/-的值为-1o中缀算式13+4X)-2Y/3对应的后缀算式为_34X*+2Y*3/-_oPs:后缀计算分层次一步一步计算。中缀变后缀可将每次计算加个括号,然后将操作符提到括号后面,全部弄完之后将括号去除,这样后缀表达式就全部出来了。5 .假设用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中,n个结点的二叉树共有_2n一个指针域,其中有_n-l一个指针域是存放了地址,有n+1一个指针是空指针。Ps:有左孩子和右孩子,每个孩子有一个指针,即共有2n个指针域。根据性质三可证的二叉链表中有n+1个,这也
8、是因为在2n个指针域中只有n-1个存有边信息(即存放了地址)。6 .对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有一e_个和2e_个。Ps:根据邻接表的定义可知,一个顶点到另一个结点有边即链接。有向图只有一次,而无向图有两次。7 .AOV网是一种一有向无回路的图。8 .在一个具有n个顶点的无向完全图中,包含有_n(nT)/2_条边,在一个具有n个顶点的有向完全图中,包含有_n(n-l)一条边。Ps:首先看题目中的要求是完全图,即每个顶点要和其他n-1个顶点有边相连,那么无向完全图有n(n-l)2o有向完全图即为它的两倍。9 .假定一个线性表为(12,23,7
9、4,55,63,40),假设按Key%4条件进行划分,使得同一余数的元素成为一个子表,那么得到的四个子表分别为_(12,40)、_(23,55,63)、(74)和0Ps:原因和选择题第9题一样。10 .向一棵B_树插入元素的过程中,假设最终引起树根结点的分裂,那么新树比原树的高度增加1O11 .在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为-0(logm)_,整个堆排序过程的时间复杂度为_0(nlog2n)一。12 .在快速排序、堆排序、归并排序中,_归并一排序是稳定的。Ps:归并排序是最稳定的排序三、计算题(每题6分,共24分)1.在如下数组A中链接存储了一个线性表,表头指针为AO
10、.next,试写出该线性表。邻接矩阵:3. 一个图的顶点集V和边集E分别为:V=1,2,3,4,5,6,7);E=(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25;用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。Ps:克鲁斯卡尔算法:设有一个有n个顶点的连通网N=V,E,最初先构造一个只有n个顶点,没有边的非连通图T=V,E,图中每个顶点自成一个连通分量。当在E中选到一条具有最小权值的边时,假设该边的两个顶点落在不同的连通分量上,那么将此边参加
11、到T中;否那么将此边舍去,重新选择一条权值最小的边。如此.重复下去,直到所有顶点在同一个连通分量上为止。答案:用克鲁斯卡尔算法得到的最小生成树为:(1,2)3,(4,6)4,(1,3)5,(1,4)8,(23)10,(4,7)201. 四、阅读算法(每题7分,共14分)2. 1.inkListmynote(LinkListL)L是不带头结点的单链表的头指针if(L&L-next)q=L;L=L-next;p=L;Sl:while(p-next)p=pnext;S2:pnext=q;qnext=NULL;)returnL;I请答复以下问题:11)说明语句Sl的功能;答案:查询链表的尾结点(2)说
12、明语句组S2的功能答案:将第一个结点链接到链表的尾部,作为新的尾结点(3)设链表表示的线性表为SiM,an),写出算法执行后的返回值所表示的线性表。答案:返回的线性表为(a2,a3,an,a)3. voidABC(BTNode*BT)(ifBTABC(BT-left);ABC(BT-right);coutdatadata)item=BST-data;查找成功returntrue;elseif(itemdata)returnFind(BST-left,item);elsereturnFind(BST-right,item)jBST-right和BST-left顺序可交换。if)六、编写算法(共8
13、分)统计出单链表HL中结点的值等于给定值X的结点数。intCountX(LNode*HL,ElemTypex)答案如下:intCountX(LNode*HL,EIemTypex)inti=0;LNode*p=HL;/i为计数器while(p!=NULL)if(P-data=x)i+;p=p-next;)while,出循环时i中的值即为X结点个数returni;/CountX数据结构试卷二一、选择题(24分)1 .下面关于线性表的表达错误的选项是(D)o(八)线性表采用顺序存储必须占用一片连续的存储空间(B)线性表采用链式存储不必占用一片连续的存储空间(C)线性表采用链式存储便于插入和删除操作的
14、实现(D)线性表采用顺序存储便于插入和删除操作的实现Ps:顺序表具有的缺点之就是不利于插入和删除操作,所以将存储方式改良为链式存储。2 .设哈夫曼树中的叶子结点总数为m,假设用二叉链表作为存储结构,那么该哈夫曼树中总共有(B)个空指针域。(八)2m-1(B)2m(C)2m+l(D)4mPs:哈夫曼树只有叶子和度为2的结点,用二叉链表存储时每个结点都会有一个左孩子,个右孩子,所以空指针域为2u3 .设顺序循环队列Q0:MT的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,那么该循环队列中的元素个数为(C)。(八)R-F(B)F-R(C)(R-F+M)%M(D)(F-R+M)%MPs:根据循环队列的定义可知C是正确的。4 .设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,那么后序遍历该二叉树得到序列为(A)。(八)BADC(B)BCDA(C)CDAB(D)CBDAPs:根据前序和中序遍历可知,C为根结点,A为左子树,D为右子树,B为A的右子树。5 .设某完全无向图中有n个顶点,那么该完全无向图中有(A)条边。(八)n(n-l)