2003年度高级程序员上午试题解析-数据结构篇

发表于:2007-05-26来源:作者:点击数: 标签:
数据结构在高程考试中占有很大的比例,掌握好数据结构,对于编程人员来说无疑是内功的修炼。数据结构主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物
数据结构在高程考试中占有很大的比例,掌握好数据结构,对于编程人员来说无疑是内功的修炼。数据结构主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构。表和树是最常用的两种高效数据结构,许多高效的算法可以用这两种数据结构来设计实现。表是线性结构的(全序关系),树(偏序或层次关系)和图(局部有序)是非线性结构。掌握线性表、多维数组、阵列、栈、树、二叉树,图的定义、存储和操作以及常见的排序和查找算法。重点是二叉树和图以及与其相关的算法。对数据结构的复习要求面面俱到,大家应该对教材的每一点都掌握。


1.关键路径是指AOE(Activity On Edge)网中________。


A. 最长的回路 B. 最短的回路


C. 从源点到汇点(结束顶点)的最长路径


D. 从源点到汇点(结束顶点)的最短路径


答案:C


解析:AOE网是一个有向图,通常用来估算工程的完成时间,图中的顶点表示事件,有向边表示活动,边上的权表示完成这一活动所需的时间。AOE网没有有向回路,存在唯一的入度为零的开始顶点,及唯一的出度为零的结束顶点。对AOE网最关心的两个问题:完成整个工程至少需要多少时间?那些活动是影响工程进度的关键?这就引出两个概念:关键路径和关键活动。从开始顶点到结束顶点的最长路径是关键路径,路径的长度也是工程完成的最少时间。关键路径上的所有活动是关键活动,关键活动的最大特征是:该活动的最早开始时间等于该活动所允许的最迟开始时间。关键活动拖延时间,整个工程也要拖延时间。求关键路径只需求出起点到终点的最长路径即可,注意关键路径不是唯一的。


复习提示:类似的考点还有:AOV网、最短路径、最小生成树。


2.以下序列中不符合堆定义的是________。


A.(102,87,100,79,82,62,84,42,22,12,68)


B.(102,100,87,84,82,79,68,62,42,22,12)


C.(12,22,42,62,68,79,82,84,87,100,102)


D.(102,87,42,79,82,62,68,100,84,12,22)


答案:D


解析:判断堆的办法就是把序列看成是一棵完全二叉树,若树中的所有非终端结点的值均不大于(或不小于)其左右孩子的结点的值,则该序列为堆。


复习提示:考生复习过程中对定义一定要清楚,这是拿分的关键。


3.一个具有767个结点的完全二叉树,其叶子结点个数为____。


A. 383 B. 384 C. 385 D. 386


答案:B


解析:可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=?(n+1)/2 ?,就可根据完全二叉树的结点总数计算出叶子结点数。本题计算得:384。


复习提示:该记得公式要记住,临时推导也可以,但容易耽误时间。


4.若一个具有n个结点、k条边的非连通无向图是一个森林(n>k),则该森林中必有____棵树。


A. k B. n C. n-k D. n+k


答案:C


解析:假设该森林中有s棵树:T1,T2,……,TS ,且每个Ti有ni 个结点,ki条边(i=1,2,……,S),由树的等价条件可知: ki=ni-1,则k=k1+k2+……+ks=(n1-1)+(n2-1)+……+(ns-1)=n-s,故s=n-k,所以该森林中必有n-k棵树。


复习提示:该题如果清楚树的等价条件,可以很容易的解出。若不清楚,则无法下手。不过考生也可以画出一个具体的非连通无向图的森林,如:5个结点3条边2棵树的森林,也可帮助判断。抽象问题具体化是作选择题的一个重要方法。


5. 将两个长度为 n 的递增有序表归并成一个长度为 2n 的递增有序表,最少需要进行关键字比较____次。


A. 1 B. n-1 C. n D. 2n


答案:C


解析:考生首先要明白两个前提:一是要归并的两个表都是递增有序的且长度都为n,二是题目问的是最少的关键字比较次数,即最好的情况下的比较次数。而最好的情况应该是:一个表的所有关键字都大于(或小于)另一个表的所有关键字,如:(1 2 3 4)与(5 6 7 8)。比较的时候有两个指针分别指向两个表的第一个元素,由于一个表的关键字要都大于另一个表的关键字,所以关键字小的表中的元素挨个与关键字大的表的第一个元素比较后,先被并入到新表中,这时关键字大的表的指针还是指向第一个元素没变,此时只需将关键字大的表复制到新表中即可。所以花费的比较次数就是关键字小的表长,也就是n。


6.已知AOE网中顶点v1~v7分别表示7个事件,弧al~a10分别表示10个活动,弧上的数值表示每个活动花费的时间,如下图所示。那么,该网的关键路径的长度为__(1)__,活动a6的松驰时间(活动的最迟开始时间-活动的最早开始时间)为__(2)__。


(1) A. 7 B. 9 C. 10 D. 11


(2) A. 3 B. 2 C. 1 D. 0


答案:(1)C (2)A


解析:(1)关键路径就是从起点到终点最长的路径。直接从图中找即可,v1 v4 v5 v7就是一条,长度为10。(2)从关键路径中可以看出,v1到v4需要花费的时间为6,活动a6至少要在经过时间2后才能开始,最晚开始时间为:6-2=4 ,则活动a6的松驰时间是4-2=2。


7.对n个元素进行快速排序时,最坏情况下的时间复杂度为____。


A.O(1og2n) B.O(n) C.O(nlog2n) D. O (n2)


答案:D


解析:若进行快速排序的n个元素按关键字有序或基本有序时,快速排序将退化为起泡排序,时间复杂度为O (n2)。


复习提示:这是一道概念题,也是考生的拿分题,考生对概念一定要清楚。


8.任何一个基于“比较”的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为____。


A.10 B.11 C.21 D.36


答案:A


解析:内部排序中除了基数排序之外,都是基于“关键字间的比较”进行排序的。任何一个借助“比较”进行排序的算法,在最坏情况下所需的比较次数至少为é1og2(n!)ù,由此可解。具体解释考生可参考严蔚敏、吴伟民的《数据结构》291页。

原文转自:http://www.ltesting.net