1、最新计算机考研数据结构统考历年真题 目前刚整理了2009-2015的试题 过几天2016的也会上传上去 希望对你有帮助。20091.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是A.栈 B.队列 C.树 D.图2.设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是 A1 B.2 C.3 D.43.给定二叉树图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树
2、。若遍历后的结点序列为3,1,7,5,6,2,4,则其遍历方式是 ALRN B.NRL C.RLN D.RNL4.下列二叉排序树中,满足平衡二叉树定义的是5.已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是A39 B.52 C.111 D.1196.将森林转换为对应的二叉树,若在二叉树中,结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是I父子关系 II.兄弟关系 III.u的父结点与v的父结点是兄弟关系A.只有II B.I和II C.I和III D.I、II和III7.下列关于无向连通图特性的叙述中,正确的是I所有顶点的度之和为偶数
3、II.边数大于顶点个数减1 III.至少有一个顶点的度为1A.只有I B.只有II C.I和II D.I和III8.下列叙述中,不符合m阶B树定义要求的是A根节点最多有m棵子树 B.所有叶结点都在同一层上C各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接9.已知关键序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后得到的小根堆是A3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,1910.若数据元素序列11,1
4、2,13,7,8,9,23,4,5是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是A起泡排序 B.插入排序 C.选择排序 D.二路归并排序41.(10分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。假定从初始顶点到目标顶点之间存在路径,现有一种解决该问题的方法:设最短路径初始时仅包含初始顶点,令当前顶点u为初始顶点;选择离u最近且尚未在最短路径中的一个顶点v,加入到最短路径中,修改当前顶点u=v;重复步骤,直到u是目标顶点时为止。请问上述方法能否求得最短路径?若该方法可行,请证明之;否则,请举例说明。42.(15分
5、)已知一个带有表头结点的单链表,结点结构为datalink假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求:(1)描述算法的基本设计思想(2)描述算法的详细实现步骤(3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C或C+或JAVA语言实现),关键之处请给出简要注释。20101、若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行。但不允许连续三次进行退栈工作,则不可能得到的出栈序列是( )A:dcebfa B:cbda
6、ef C:dbcaef D:afedcb2、某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作,则不可能得到的顺序是( )A:bacde B:dbace C:dbcae D:ecbad3、下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是( )4、在下列所示的平衡二叉树中插入关键字48后得到一棵新平衡二叉树,在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是( )A:13,48 B:24,48 C:24,53 D:24,905、在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶节点个数是( )A
7、:41 B:82 C:113 D:1226、对n(n大于等于2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是( )A:该树一定是一棵完全二叉树B:树中一定没有度为1的结点C:树中两个权值最小的结点一定是兄弟结点D:树中任一非叶结点的权值一定不小于下一任一结点的权值7、若无向图G-(V.E)中含7个顶点,则保证图G在任何情况下都是连通的,则需要的边数最少是( )A:6 B:15 C:16 D:218、对下图进行拓补排序,可以得到不同的拓补序列的个数是( )A:4 B:3 C:2 D:19、已知一个长度为16的顺序表L,其元素按关键字有序排列,若采用折半查找法查找一个不存在的元素,
8、则比较次数最多是( )A:4 B:5 C:6 D:710、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是( )A:递归次数与初始数据的排列次序无关B:每次划分后,先处理较长的分区可以减少递归次数C:每次划分后,先处理较短的分区可以减少递归次数D:递归次数与每次划分后得到的分区处理顺序无关11、对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下( )第一趟:2,12,16,5,10,88第二趟:2,12,5,10,16,88第三趟:2,5,10,12,16,88则采用的排序方法可能是:A:起泡排序 B:希尔排序 C:归并排序 D:基数排序41.(10
9、分)将关键字序列(7、8、11、18、9、14)散列存储到散列列表中,散列表的存储空间是一个下标从0开始的一个一维数组散列函数维:H(key)=(key3)MODT,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7问题:(1)请画出所构造的散列表; (2)分别计算等概率情况下,查找成功和查找不成功的平均查找长度。42.(13分)设将n(n,1)个整数存放到一维数组R中,试设计一个在时间和空间两方面尽可能有效的算法,将R中保有的序列循环左移P(0Pn)个位置,即将R中的数据由(X0X1Xn-1)变换为(XpXp+1Xn-1X0X1Xp-1)要求:(1)给出算法的基本设计思想。 (2)根据
10、设计思想,采用C或C+或JAVA语言表述算法关键之处给出注释。 (3)说明你所设计算法的时间复杂度和空间复杂度20111.设n是描述问题规模的非负整数,下面程序片段的时间复杂度是x = 2;while ( x n/2 )x = 2*x;A.O(log2n) B.O(n) C.O(n log2n) D.O(n2)2.元素a, b, c, d, e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是 A.3 B.4 C.5 D.63.已知循环队列存储在一维数组A0.n-1 中,且队列非空时front和rear分别指向队头元素和队
11、尾元素。若初始时队列为空,且要求第1个进入队列的元素存储在A0处,则初始时front和rear的值分别是A.0, 0 B.0, n-1 C.n-1, 0 D.n-1, n-14.若一棵完全二叉树有768个结点,则该二叉树中叶结点的个数是A.257 B.258 C.384 D.3855.若一棵二叉树的前序遍历序列和后序遍历序列分别为1, 2, 3, 4和4, 3, 2, 1,则该二叉树的中序遍历序列不会是A.1, 2, 3, 4 B.2, 3, 4, 1 C.3, 2, 4, 1 D.4, 3, 2, 16.已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树中无右孩子的结点个数
12、是A.115 B.116 C.1895 D.18967.对于下列关键字序列,不可能构成某二叉排序树中一条查找路径的序列是A.95, 22, 91, 24, 94, 71 B.92, 20, 91, 34, 88, 35C.21, 89, 77, 29, 36, 38 D.12, 25, 71, 68, 33, 348.下列关于图的叙述中,正确的是I. 回路是简单路径II. 存储稀疏图,用邻接矩阵比邻接表更省空间III.若有向图中存在拓扑序列,则该图不存在回路A.仅II B.仅I、II C.仅III D.仅I、III9.为提高散列(Hash)表的查找效率,可以采取的正确措施是I. 增大装填(载)
13、因子II. 设计冲突(碰撞)少的散列函数III.处理冲突(碰撞)时避免产生聚集(堆积)现象A.仅I B.仅II C.仅I、II D.仅II、III10.为实现快速排序算法,待排序序列宜采用的存储方式是A.顺序存储 B.散列存储 C.链式存储 D.索引存储11.已知序列25, 13, 10, 12, 9是大根堆,在序列尾部插入新元素18,将其再调整为大根堆,调整过程中元素之间进行的比较次数是A.1 B.2 C.4 D.541.(8分)已知有6个顶点(顶点编号为0 5)的有向带权图G,其邻接矩阵A为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。要求:(1)写出图G的邻接矩阵A。(2)画出
14、有向带权图G。(3)求图G的关键路径,并计算该关键路径的长度。42.(15分)一个长度为L(L1)的升序序列S,处在第L/2个位置的数称为S的中位数。例如,若序列S1=(11, 13, 15, 17, 19),则S1的中位数是15。两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2, 4, 6, 8, 20),则S1和S2的中位数是11。现有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。 要求:(1)给出算法的基本设计思想。(2)根据设计思想,采用C或C+或JAVA语言描述算法,关键之处给出注释。(3)说明你所设计算法的
15、时间复杂度和空间复杂度。20121、求整数n(n0)阶乘的算法如下,其时间复杂度是()intfact(intn)if(n=1)return1;returnn*fact(n-1);A.O(log2n) B.O(n) C.(nlog2n) D.O(n2)2、已知操作符包括+、-、*、/、(和)。将中缀表达式a+b-a*(c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存栈中的操作符的最大个数是()A.5 B.7 C.8 D.113、若一颗二叉树的前序遍历序列为a,e,b,d,c,后续遍历序列为b,c,d,e,a,则根节点的孩子节点()A.只有e B.有e、b C.有e、c D.无法确定4、若平衡二叉树的高度为6,且所有非叶节点的平衡因子均为1,则该平衡二叉树的节点总数为()A.10 B.20 C.32 D.335、对有n个节点、e条边且使用邻接表存储的有向图进行广度优先遍历,其算法时间复杂度()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1