计算机考研真题及答案——数据结构部分.ppt

上传人:土8路 文档编号:11403975 上传时间:2021-08-02 格式:PPT 页数:24 大小:223KB
返回 下载 相关 举报
计算机考研真题及答案——数据结构部分.ppt_第1页
第1页 / 共24页
计算机考研真题及答案——数据结构部分.ppt_第2页
第2页 / 共24页
计算机考研真题及答案——数据结构部分.ppt_第3页
第3页 / 共24页
计算机考研真题及答案——数据结构部分.ppt_第4页
第4页 / 共24页
计算机考研真题及答案——数据结构部分.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《计算机考研真题及答案——数据结构部分.ppt》由会员分享,可在线阅读,更多相关《计算机考研真题及答案——数据结构部分.ppt(24页珍藏版)》请在三一文库上搜索。

1、2009-2010计算机考研真题及答案数据结构部分,数据结构考研真题解析,2009年统考计算机考研真题 2010年统考计算机考研真题,2009年统考计算机考研真题,一、单项选择题(每小题2分10题) 1.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( ) A.栈B.队列C.树D.图,B,2.设栈S和队列Q的初始状态均为空,元素a,b,c,d,e,f,g依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是( ) A1 B.2

2、C.3 D.4 3.给定二叉树如右图所示。设N代 表二叉树的根,L代表根结点的左子 树,R代表根结点的右子树。若遍历 后的结点序列为3,1,7,5,6,2, 4,则其遍历方式是( ) ALRN B. NRL C. RLN D. RNL,C,D,4.下列二叉排序树中,满足平衡二叉树定义的是( ) 5.已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是( ) A39B.52C.111D.119,B,C,6.将森林转换为对应的二叉树,若在二叉树中,结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是( ) I父子关系II.兄弟关系 III.u的父

3、结点与v的父结点是兄弟关系 A.只有IIB.I和II C.I和III D.I、II和III 7.下列关于无向连通图特性的叙述中,正确的是( )I所有顶点的度之和为偶数 II.边数大于顶点个数减1 III.至少有一个顶点的度为1 A.只有I B.只有II C.I和II D.I和III,B,A,8.下列叙述中,不符合m阶B树定义要求的是( ) A根节点最多有m棵子树 B.所有叶结点都在同一层上 C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接 9.已知关键序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后得到的小根堆是( ) A.3,5,12,8,

4、28,20,15,22,19 B.3,5,12,19,20,15,22,8,28 C.3,8,12,5,20,15,22,28,19 D.3,12,5,8,28,20,15,22,19,D,B,10.若数据元素序列11,12,13,7,8,9,23,4,5是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是( ) A.起泡排序 B.插入排序 C.选择排序 D.二路归并排序,A,二、综合应用题(10分+15分),41.(10分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。假定从初始顶点到目标顶点之间存在路径,现有一种解决

5、该问题的方法: 设最短路径初始时仅包含初始顶点,令当前 顶点u为初始顶点; 选择离u最近且尚未在最短路径中的一个顶点v,加入到最短路径中,修改当前顶点u=v; 重复步骤,直到u是目标顶点时为止。 请问上述方法能否求得最短路径?若该方法可 行,请证明之;否则,请举例说明。,41题答案解析,该方法求得的路径不一定是最短路径。例如,对于下图所示的带权图,如果按照题中的原则,从A到C的最短路径为ABC,事实上其最短路径为ADC。,42.(15分)已知一个带有表头结点的单链表,结点结构为 ,假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结

6、点(k为正整数)。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求: (1)描述算法的基本设计思想 (2)描述算法的详细实现步骤 (3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C或C+或JAVA语言实),关键之处请给出简要注释。,42题答案解析 (1)算法的基本设计思想: 定义两个指针变量p和q,初始时均指向头结点的下 一个结点。P指针沿链表移动;当p指针移动到第k个结点时,q指针开始与p指针同步移动;当p指针移动到链表最后一个结点时,q指针所指元素为倒数第k个结点。 以上过程对链表仅进行一遍扫描。 (2)算法的详细实现步骤: count=0,p和q指向链表

7、表头结点的下一个结点; 若p为空,转; 若count等于k,则q指向下一个结点;否则, count=count+1; p指向下一个结点,转步骤; 若count等于k,则查找成功,输出该结点的 data域的值,返回1;返回,查找失败,返回0; 算法结束。,(3)算法实现: typedef struct LNode int data; struct LNode * link; * LinkList; int SearchN(LinkList list,int k) LinkList p,q; int count=0; /*计数器赋初值*/ p=q=list-link; /*p和q指向链表表头结点的

8、下一个结点*/ while(p!=NULL) if(countlink;/*q移到下一个结点*/ p=p-link; /*p移到下一个结点*/ if(countdata); /*查找成功*/ return (1); ,2010年统考计算机考研真题,一、单项选择题(每小题2分11题) 1.若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行。但不允许连续三次进行退栈工作,则不可能得到的出栈序列是( ) A:dcebfaB:cbdaefC:dbcaef D:afedcb 2.某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作,则不可能得到的顺序是( ) A:bacde B:db

9、ace C:dbcae D:ecbad,D,C,3.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是( ),D,4.在下图所示的平衡二叉树中插入关键字48后得到一棵新平衡二叉树,在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是( ) A:13,48 B:24,48 C:24,53 D:24,90 5.在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶节点个数是( ) A:41 B:82 C:113 D:122,C,B,6.对n(n2)个权值均不相同的字符构成 哈夫曼树,关于该哈弗曼树的叙述中,错误

10、的是( ) A:该树一定是一棵完全二叉树 B:树中一定没有度为1的结点 C:树中两个权值最小的结点一定是兄弟结点 D:树中任一非叶结点的权值一定不小于下一 任一结点的权值 7.若无向图G=(V.E)中含7个顶点,则保证图G在任何情况下都是连通的,则需要的边数最少是( ) A :6 B:15 C:16 D:21,A,C,8.对下图进行拓补排序,可以得到不同的拓补序列的个数是( ) A:4 B:3 C:2 D:1 9.已知一个长度为16的顺序表L,其元素按关键字有序排列,若采用折半查找法查找一个不存在的元素,则比较次数最多是( ) A:4 B:5 C:6 D:7,B,B,10.采用递归方式对顺序表

11、进行快速排序, 下列关于递归次数的叙述中,正确的是( ) 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:基数排序,D,A,二、综合应用题(10分+13分),41.(10分)将关键字

12、序列(7、8、11、18、9、14)散列存储到散列列表中,散列表的存储空间是一个下标从0开始的一个一维数组散列函数维:H(key)=(key3)MODT,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。 (1)请画出所构造的散列表; (2)分别计算等概率情况下,查找成功和查找不成功的平均查找长度。,41题答案解析,(1)构造的散列表如下 (2)查找成功的平均查找长度:ASL成功=12/7。 查找不成功的平均查找长度:ASL不成功=18/7。,42.(13分)设将n(n,1)个整数存放到一维数组R中,试设计一个在时间和空间两方面尽可能有效的算法,将R中保有的序列循环左移P(0Pn)个位

13、置,即将R中的数据由(X0 X1 Xn-1)变换为(Xp Xp+1 Xn-1 X0 X1 Xp-1)要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C+或JAVA语言表述算法,关键之处给出注释。 (3)说明你所设计算法的时间复杂度和空间复杂度,42题答案解析,(1)给出算法的基本设计思想: 先将n个数据x0 x1xpxn-1原地逆置,得到xn-1xpxp-1x0,然后再将前 n-p个和后p个元素分别原地逆置,得到最终结果:xpxp+1xn-1x0 x1xp-1。 (2)算法实现: void reverse(int r,int left,int right) int k=left,j=right,temp; /k等于左边界left,j等于右边界right while(kj) /交换rk和rj temp=rk; rk=rj; rj=temp; k+;/k右移一个位置 j-;/j左移一个位置 ,void leftShift(int r,int n,int p) if(p0/将后p个元素逆置 (3)说明算法复杂性:上述算法的时间复杂度为O(n),空间复杂度为O(1)。,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1