您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > 数据结构试卷1(含答案)
数据结构试卷一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.下列选项中与数据存储结构无关的术语是()A.顺序表B.链表C.链队列D.栈2.将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是()A.n-1B.nC.2n-1D.2n3.已知循环队列的存储空间大小为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下一个位置,则向队列中插入新元素时,修改指针的操作是()A.rear=(rear-1)%m;B.front=(front+1)%m;C.front=(front-1)%m;D.rear=(rear+1)%m;4.递归实现或函数调用时,处理参数及返回地址,应采用的数据结构是()A.堆栈B.多维数组C.队列D.线性表5.设有两个串p和q,其中q是p的子串,则求q在p中首次出现位置的算法称为()A.求子串B.串联接C.串匹配D.求串长6.对于广义表A,若head(A)等于tail(A),则表A为()A.()B.(())C.((),())D.((),(),())7.若一棵具有n(n0)个结点的二叉树的先序序列与后序序列正好相反,则该二叉树一定是()A.结点均无左孩子的二叉树B.结点均无右孩子的二叉树C.高度为n的二叉树D.存在度为2的结点的二叉树8.若一棵二叉树中度为l的结点个数是3,度为2的结点个数是4,则该二叉树叶子结点的个数是()A.4B.5C.7D.89.某算法有3个程序段,第一程序段的执行次数为错误!未找到引用源。,第二个程序段执行次数为4n,第三个程序段的执行次数为0.06错误!未找到引用源。,则该算法的时间复杂度为()。A.O(n)B.O(错误!未找到引用源。)C.O(错误!未找到引用源。)D.O(错误!未找到引用源。)10.已知有向图G=(V,E),其中V={V1,V2,V3,V4},E={V1,V2,V1,V3,V2,V3,V2,V4,V3,V4},图G的拓扑序列是()A.V1,V2,V3,V4B.V1,V3,V2,V4C.V1,V3,V4,V2D.V1,V2,V4,V311.平均时间复杂度为O(nlogn)的稳定排序算法是()A.快速排序B.堆排序C.归并排序D.冒泡排序12.已知关键字序列为(51,22,83,46,75,18,68,30),对其进行快速排序,第一趟划分完成后的关键字序列是()A.(18,22,30,46,51,68,75,83)B.(30,18,22,46,51,75,83,68)C.(46,30,22,18,51,75,68,83)D.(30,22,18,46,51,75,68,83)13.某索引顺序表共有元素395个,平均分成5块。若先对索引表采用顺序查找,再对块中元素进行顺序查找,则在等概率情况下,分块查找成功的平均查找长度是()A.43B.79C.198D.20014.在含有10个关键字的3阶B-树中进行查找,至多访问的结点个数为()A.2B.3C.4D.515.设矩阵A是一个对称矩阵,为了节省空间,将其下三角部分按行优先存放在一维数组B中。对下三角矩阵中任一元素aij(设矩阵A是一个对称矩阵,为了节省空间,将其下三角部分按行优先存放在一维数组B中,对下三角矩阵中任一元素aij(i=j),在一维数组B中下标K的值是()。A、i(i-1)/2+j-1B、i(i-1)/2+jC、i(i+1)/2+j-1D、i(i+1)/2+j二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。16.数据结构由数据的逻辑结构、存储结构和数据的____________三部分组成。17.在单链表中某结点后插入一个新结点,需要修改_______________个结点指针域的值。18.设栈S的初始状态为空,若元素a、b、c、d、e、f依次进栈,得到的出栈序列是b、d、c、f、e、a,则栈S的容量至少是________________。19.长度为零的串称为________________。20.广义表G=(a,b,(c,d,(e,f)),G)的长度为________________。21.一棵树T采用孩子兄弟链表存储,如果树T中某个结点为叶子结点,则该结点在二叉链表中所对应的结点一定是________________。22.一个有n个顶点的无向连通图,最少有________________条边。23.当待排关键字序列基本有序时,快速排序、简单选择排序和直接插入排序三种排序方法中,运行效率最高的是________________。24.设目标串T=“abccdcdccbaa”,模式P=“cdcc”则第___________次匹配成功。若字符串的长度为n,则子串的个数为___________25.在归并排序中,若待排序记录的个数为20,则共需要进行____________趟归并三、解答题(本大题共4小题,每小题5分,共20分)26.已知一棵二叉排序树(结点值大小按字母顺序)的前序遍历序列为EBACDFHG,请回答下列问题:(1)画出此二叉排序树;(2)若将此二叉排序树看作森林的二叉链表存储,请画出对应的森林。27.已知有向图的邻接表如图所示,请回答下面问题:(1)给出该图的邻接矩阵;(2)从结点A出发,写出该图的深度优先遍历序列。28.在一个算法中需要建立多个堆栈是可以选用下列两种种方案之一,试问:这三种方案之间相比较各有什么优缺点?(1)分别用多个顺序存储空间建立多个独立的堆栈;(2)多个堆栈共享一个顺序存储空间;29.设G=(V,E)以邻接表存储,如图所示,试画出图的深度优先和广度优先生成图。四、算法阅读题(本大题共4小题,每小题5分,共20分)30.阅读下列程序。voidf30(intA[],intn){inti,j,m;for(i=1;in;i++)for(j=0;ji;j++){m=A[i*n+j];A[i*n+j]=A[j*n+i];A[j*n+i]=m;}}回答下列问题:(1)已知矩阵B=987654321,将其按行优先存于一维数组A中,给出执行函数调用f30(A,3)后矩阵B的值;31.假设以二叉链表表示二叉树,其类型定义如下:typedefstructnode{chardata;structnode*Ichild,*rchild;∥左右孩子指针}*BinTree;阅读下列程序。voidf31(BinTreeT){InitStack(S);∥初始化一个堆栈Swhile(T||!StackEmpty(S){while(T){Push(S,T);T=T-lchild;}if(!StackEmpty(S)){T=Pop(S);printf(“%c”,T-data);T=T-rchild;}}}回答下列问题:(1)已知以T为根指针的二叉树如图所示,请写出执行f31(T)的输出结果:(2)简述算法f31的功能。32.阅读下列程序。voidf32(intA[],intn){inti,j,m=l,t;for(i=0;in-l&&m;i++){for(j=0;jn;j++)printf(“%d”,A[j]);printf(“\n”);m=0:for(j=1;jn-i;j++)if(A[j-1]A[j]){t=A[j-l];A[j-1]=A[j];A[j]=t;m=1;}}}回答问题:已知整型数组A[]={34,26,15,89,42},写出执行函数调用f32(A,5)后的输出结果。33.程序填空(1)//////直接插入排序voidInsertSort(inta[],intn){inti,j,k=1;for(i=2;i=n;i++){if(a[i]a[i-1]){a[0]=a[i];_________;for(j=i-2;a[0]a[j];j--)a[j+1]=a[j];a[j+1]=a[0];}printf(\n第%d趟结果为:,i-1);for(k=1;____;k++)printf(%d,a[k]);}}五、算法设计题(本题10分)34.假设用带头结点的单循环链表表示线性表,单链表的类型定义如下:typedefstructnode{intdata;structnode*next;}LinkNode,*LinkList;编写程序,求头指针为head的单循环链表中data域值为正整数的结点个数占结点总数的比例,若为空表输出0,并给出所写算法的时间复杂度。函数原型为:floatf34(LinkListhead):一、单项选择题1—5DBDAA6—10BCBCA11—15CDABD二、填空题16、运算17、218、319、空串20、421、左右指针域均为空22、n123、直接插入排序24、6n(n+1)/225、5三、解答题26、(1)(2)27、该图的邻接矩阵如下:0110000110000010010010010(2)图的深度优先遍历序列如下:ABCED28、(1)每个栈仅用一个顺序存储空间时,操作简便,但分配存储空间小了,容易产生溢出,分配空间大了,容易造成浪费,各栈不能共享空间。(2)多个栈共享一个顺序存储空间,充分利用了存储空间,只有在整个存储空间都用完时才能产生溢出,其缺点是当一个栈满时要向左、右栈查询有无空闲单元。如果有,则要移动元素和修改相关的栈底和栈顶指针。当接近栈满时,查询空闲单元、移动元素和修改栈底栈顶指针的操作频繁,计算复杂并且耗费时间。29、设从顶点1开始遍历,则深度优先生成树为1---2---3---4---5宽度优先生成树为12345输出结果:V1V4V3V6V2V5四、算法阅读题30、矩阵B的值为:14725836931、(1)执行f31(T)的输出结果为:CBEDFAGH(2)算法f31实现的功能是:利用栈实现二叉树的中序遍历。32、执行函数调用f32(A,5)后的输出结果是:34,26,15,89,4226,15,34,42,8915,26,34,42,8933、a[i]=a[i-1]k=五、算法设计题34、解:floatf34(LinkListhead){LinkListp;Intcount=0,scount=0;//count代表data域值为正整数的结点个数,scount代表总结点个数。If(headnext==head)return0;Else{P=head;Do{p=pnext;Scount++;If(pdata0);}While(pnext!=head);}Printf(“正整数的结点个数占结点总数的比例是:%d”,count/scount*1.0);}此算法的时间复杂度为:o(n)
本文标题:数据结构试卷1(含答案)
链接地址:https://www.777doc.com/doc-4296258 .html