《数据结构经典复习题(仅供参考)10页word文档.doc》由会员分享,可在线阅读,更多相关《数据结构经典复习题(仅供参考)10页word文档.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流数据结构经典复习题(仅供参考)【精品文档】第 10 页一、选择题(20分)1下面关于线性表的叙述错误的是( D )。(A) 线性表采用顺序存储必须占用一片连续的存储空间(B) 线性表采用链式存储不必占用一片连续的存储空间(C) 线性表采用链式存储便于插入和删除操作的实现(D) 线性表采用顺序存储便于插入和删除操作的实现2设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为( A )。(A) BADC(B) BCDA(C) CDAB(D) CBDA3设某棵二叉树中有2000个结点,则该二叉树的最小高度为( C )。(A
2、) 9(B) 10(C) 11(D) 124设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为( B )。(A) O(1)(B) O(log2n)(C)(D) O(n2)5设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列( B )方法可以达到此目的。(A) 快速排序(B) 堆排序(C) 归并排序(D) 插入排序第9小题分析:9快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的10个数,而堆排序只需要在初始堆的基础上再进行10次筛选即可,每次筛选的时间复杂度为O(log2n)。6.下列四种排序中( D )的空间复杂度最大。(
3、A) 插入排序(B) 冒泡排序(C) 堆排序(D) 归并排序7设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为(C )。(A) O(n)(B) O(nlog2n)(C) O(1)(D) O(n2)8设一棵二叉树的深度为k,则该二叉树中最多有(D )个结点。(A) 2k-1(B) 2k(C) 2k-1(D) 2k-19在二叉排序树中插入一个结点的时间复杂度为(B )。(A) O(1)(B) O(n)(C) O(log2n)(D) O(n2)10设用链表作为栈的存储结构则退栈操作( B )。(A) 必须判别栈是否为满(B) 必须判别栈是否为空(C) 判别栈元素的类型(D) 对栈不
4、作任何判别11下列四种排序中(A )的空间复杂度最大。(A) 快速排序(B) 冒泡排序(C) 希尔排序(D) 堆12设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是( C )。(A) N0=N1+1(B) N0=Nl+N2(C) N0=N2+1(D) N0=2N1+l13.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过(A )。(A) log2n+1(B) log2n-1(C) log2n(D) log2(n+1)14数据的最小单位是( A )。(A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量
5、15设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为( D )。(A) O(log2n)(B) O(1)(C) O(n2)(D) O(n)16设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为m的结点数为Nm,则N0=(B )。(A) Nl+N2+Nm(B) l+N2+2N3+3N4+(m-1)Nm(C) N2+2N3+3N4+(m-1)Nm(D) 2Nl+3N2+(m+1)Nm17设输入序列是1、2、3、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是(C )。(A) n-i(B) n-1-i(C)
6、 n+1-i(D) 不能确定18时间复杂度不受数据初始状态影响而恒为O(nlog2n)的是( A )。(A) 堆排序(B) 冒泡排序(C) 希尔排序(D) 快速排序19设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(D )。(A) 空或只有一个结点(B) 高度等于其结点数(C) 任一结点无左孩子(D) 任一结点无右孩子20顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为(A )。(A) O(n)(B) O(n2)(C) O(n1/2)(D) O(1og2n)21二路归并排序的时间复杂度为( C )。(A) O(n)(B) O(n2)(C) O(nlog2n)(D
7、) O(1og2n)22. 深度为k的完全二叉树中最少有(B )个结点。(A) 2k-1-1(B) 2k-1(C) 2k-1+1(D) 2k-123.设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为(D )。(A) O(n)(B) O(n2)(C) O(nlog2n)(D) O(1og2n)24( B )二叉排序树可以得到一个从小到大的有序序列。(A) 先序遍历(B) 中序遍历(C) 后序遍历(D) 层次遍历25设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为(B )。(A) 2i+1(B) 2i(C) i/2(D) 2i-
8、126程序段s=i=0;do i=i+1; s=s+i;while(inext=top;(D) top=top-next;28.建立一个长度为n的有序单链表的时间复杂度为( C )(A) O(n)(B) O(1)(C) O(n2)(D) O(log2n)29.在二叉排序树中插入一个关键字值的平均时间复杂度为( B )。(A) O(n)(B) O(1og2n)(C) O(nlog2n)(D) O(n2)30.设一棵完全二叉树中有65个结点,则该完全二叉树的深度为( B )。(A) 8(B) 7(C) 6(D) 531.队列是一种(A )的线性表。(A) 先进先出(B) 先进后出(C) 只能插入(
9、D) 只能删除 32.利用直接插入排序法的思想建立一个有序线性表的时间复杂度为( C )。 (A) O(n)(B) O(nlog2n)(C) O(n2)(D) O(1og2n)33设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为(D )。(A) p-right=s; s-left=p; p-right-left=s; s-right=p-right;(B) s-left=p;s-right=p-right;p-right=s; p-right-left=s;(C) p-right=s; p-right-left=s; s-left=p; s
10、-right=p-right;(D) s-left=p;s-right=p-right;p-right-left=s; p-right=s;34. 一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是 C 。Aedcba Bdecba Cdceab DAbcdeA:a,b,c,d,e进,之后依次出栈B:a,b,c,d,进,d出,e进,e,c,b,a出D:a进a出,b进b出e进e出C:的话dce都好办,之后的ab做不到这道题就是没告诉你进栈的同时可以随时出栈=二、填空题1. 数据的物理结构主要包括顺序存储结构和链式存储结构两种情况。2. 数据结构从逻辑上划分为三种基本类型:线性结构、树
11、型结构和图型结构。3. 公式:二维数组A中任一元素aij的存储位置:(LOC(0,0)是a00的存储位置) LOC(i,j)=LOC(0,0)+(b2*i+j)L5.快速排序的时间性能分析最好情况:每一次划分对一个记录定位后,该记录的左侧子表与右侧子表的长度相同,为O(nlog2n)。最坏情况:每次划分只得到一个比上一次划分少一个记录的子序列(另一个子序列为空),为 O(n2)。平均情况:为O(nlog2n)。6. 在快速排序、堆排序、归并排序中,_归并_排序是稳定的。7.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为_O(log2n)_,整个堆排序过程的时间复杂度为_ O(nlog
12、2n)_。8.快速排序的最坏时间复杂度为O(n2),平均时间复杂度为O(nlog2n)。9.散列表中解决冲突的两种方法是开放定址法和链地址法。10.在堆排序和快速排序中,如果从平均情况下排序的速度最快的角度来考虑应最好选择_快速_排序,如果从节省存储空间的角度来考虑则最好选择_堆_排序。三、 判断题全对或全错得5分1调用一次深度优先遍历可以访问到图中的所有顶点。( )2分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。( )3冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。( )4满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。( )5设一棵二叉树的先序序列和后
13、序序列,则能够唯一确定出该二叉树的形状。( )6层次遍历初始堆可以得到一个有序的序列。( )7设一棵树T可以转化成二叉树BT,则二叉树BT中一定没有右子树。( )8线性表的顺序存储结构比链式存储结构更好。( )9中序遍历二叉排序树可以得到一个有序的序列。( )10.快速排序是排序算法中平均性能最好的一种排序。( )11不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。( )12当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。( )13设某堆中有n个结点,则在该堆中插入一个新结点的时间复杂度为O(log2n)。( )14完全二叉树中的叶子结点只可能在最后两层中出现。(
14、 )15哈夫曼树中没有度数为1的结点。( )16对连通图进行深度优先遍历可以访问到该图中的所有顶点。( )17先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。( )18由树转化成二叉树,该二叉树的右子树不一定为空。( )19线性表中的所有元素都有一个前驱元素和后继元素。( )20.带权无向图的最小生成树是唯一的。( )21.如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。( )22.设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。( )23.分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的块号,然后再在相应的块内进行
15、顺序查找。( )24.二维数组和多维数组均不是特殊的线性结构。( )25.向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。( )26.如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。( )27.非空的双向循环链表中任何结点的前驱指针均不为空。( )28.不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。( )29.图的深度优先遍历算法中需要设置一个标志数组,以便区分图中的每个顶点是否被访问过。( )30.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。( )31.有向图的邻接表和逆邻接表中表结点的个数不一定相
16、等。( )32.对链表进行插入和删除操作时不必移动链表中结点。( )33.子串“ABC”在主串“AABCABCD”中的位置为2。( )34.若一个叶子结点是某二叉树的中序遍历序列的最后一个结点,则它必是该二叉树的先序遍历序列中的最后一个结点。( )35.希尔排序算法的时间复杂度为O(n2)。( )36.用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。( )37.中序遍历一棵二叉排序树可以得到一个有序的序列。()38.入栈操作和入队列操作在链式存储结构上实现时不需要考虑栈溢出的情况。( )39.顺序表查找指的是在顺序存储结构上进行查找。( )40.堆是完全二叉
17、树,完全二叉树不一定是堆。( )四、 简答题1、 四类数据结构答;、集合;结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。、线性结构:结构中数据元素之间存在一个对一个的关系。、树形结构:结构中的数据元素之间存在一个对多个的关系。、图形结构或网状结构:结构中的数据元素之间存在多个对多个的关系。2、什么叫稳定的排序?列出基本稳定排序的算法。答:假定在Ki=Kj(1in,1jn,ij),且在排序前的序列中Ri领先于Rj(即inext=0) return; else for(q=head,p=head-next;p!=0;p=q-next) for(s=head;s!=q-next;
18、s=s-next) if (s-datap-data) break; if(s=q-next)q=p;elseq-next=p-next; p-next=s-next; s-next=p; t=p-data;p-data=s-data;s-data=t;3. 试编写算法,删除双向循环链表中第k个结点。(老师中说要删除节点的前驱和后序)void del(DUNODE *head,int i) DUNODE *p; if(i=0) *head=*head-next; *head-prior=NULL; return(0); Else for(j=0;jnext; if(p=NULL|ji) return(1); p-prior-next=p-next; p-next-prior=p-proir; free(p); return(0); 4、 给出二叉树结构图实现变历算法,先中序后序、考察先序变点,对先中后序访问,输出结点的次序。 略