【计算机类职业资格】软件设计师-数据结构(二)及答案解析.doc
《【计算机类职业资格】软件设计师-数据结构(二)及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】软件设计师-数据结构(二)及答案解析.doc(29页珍藏版)》请在麦多课文档分享上搜索。
1、软件设计师-数据结构(二)及答案解析(总分:131.00,做题时间:90 分钟)一、综合知识试题(总题数:36,分数:41.00)1.具有 n 个顶点、e 条边的图采用邻接表存储结构,进行深度优先遍历和广度优先遍历运算的时间复杂度均为_。(分数:1.00)A.O(n2)B.O(e2)C.(n*e)D.D(n+e)2.对于长度为,m(m1)的指定序列,通过初始为空的一个栈、一个队列后,错误的叙述是_。(分数:1.00)A.若入栈和入队的序列相同,则出栈序列和出队序列可能相同B.若入栈和入队的序列相同,则出栈序列和出队序列可以互为逆序C.入队序列与出队序列关系为 1:1,而入栈序列与出栈序列关系是
2、 1:n(n1)D.入栈序列与出栈序列关系为 1:1,而入队序列与出队序列关系是 1:n(n1)3.下面关于二叉排序树的叙述中,错误的是_。(分数:1.00)A.对二叉排序树进行中序遍历,必定得到节点关键字的有序序列B.依据关键字无序的序列建立二叉排序树,也可能构造出单支树C.若构造二叉排序树时进行平衡化处理,则根节点的左子树节点数与右子树节点数的差值一定不超过 1D.若构造二叉排序树时进行平衡化处理,则根节点的左子树高度与右子树高度的差值一定不超过 14.邻接矩阵和邻接表是图(网)的两种基本存储结构,对于具有,n 个顶点、e 条边的图,_。(分数:1.00)A.进行深度优先遍历运算所消耗的时
3、间与采用哪一种存储结构无关B.进行广度优先遍历运算所消耗的时间与采用哪一种存储结构无关C.采用邻接表表示图时,查找所有顶点的邻接顶点的时间复杂度为 O(n*e)D.采用邻接矩阵表示图时,查找所有顶点的邻接顶点的时间复杂度为 O(n2)5.用关键字序列 10、20、30、40、50 构造的二叉树排序(二叉查找树)为_。(分数:1.00)A.B.C.D.6.设有如下所示的下三角矩阵 A08,08,将该三角矩阵的非零元素(即行下标不小于列下标的所有元素)按行优先压缩存储在数组 M1m中,则元素 Ai,j(0i8,ji)存储在数组 M 的_中。(分数:1.00)A.B.C.D.7._的邻接矩阵是一个对
4、称矩阵。(分数:1.00)A.无向图B.AOV 网C.AOE 网D.有向图8.设循环队列 Q 的定义中有 rear 和 len 两个域变量,其中 rear 表示队尾元素的指针,len 表示队列的长度,如下图所示(队列长度为 3,队头元素为 e)。设队列的存储空间容量为 M,则队头元素的指针为_。(分数:1.00)A.(Q.rear+Q.len-1)B.(Q.rear+Q.len-1+M)%MC.(Q.rear-Q.len+1)D.(Q.rear-Q.len+1+M)%M9.若将某有序树 T 转换为二叉树 T1,则 T 中节点的后根序列就是 T1中节点的 (8) 遍历序列。例如,下图(a)所示的
5、有序树转化为二叉树后如图(b)所示。(分数:1.00)A.先序B.中序C.后序D.层序10.下面关于查找运算及查找表的叙述中,错误的是_。(分数:1.00)A.哈希表可以动态创建B.二叉排序树属于动态查找表C.折半查找要求查找表采用顺序存储结构或循环链表结构D.顺序查找方法既适用于顺序存储结构,也适用于链表结构11.下面关于栈和队列的叙述中,错误的是_。(分数:1.00)A.栈和队列都是操作受限的线性表B.队列采用单循环链表存储时,只需设置队尾指针就可使入队和出队操作的时间复杂度都为 O(1)C.若队列的数据规模 n 可以确定,则采用顺序存储结构比链式存储结构效率更高D.利用两个栈可以模拟一个
6、队列的操作,反之亦可设一个包含 N 个顶点、E 条边的简单有向图采用邻接矩阵存储结构(矩阵元素 Aij等于 1/0 分别表示顶点 i 与顶点 j 之间有/无弧),则该矩阵的元素数目为 (11) ,其中非零元素数目为 (12) 。(分数:2.00)A.E2B.N2C.N2-E2D.N2+E2A.NB.N+EC.ED.N-E12.栈是一种按“后进先出”原则进行插入和删除操作的数据结构,因此,_必须用栈。(分数:1.00)A.实现函数或过程的递归调用及返回处理时B.将一个元素序列进行逆置C.链表节点的申请和释放D.可执行程序的装入和卸载已知一个线性表(16,25,35,43,51,62,87,93)
7、,采用散列函数 H(Key)=Key mod 7 将元素散列到表长为 9 的散列表中。若采用线性探测的开放定址法解决冲突(顺序地探查可用存储单元),则构造的哈希表为 (15) ,在该散列表上进行等概率成功查找的平均查找长度为 (16) (确定为记录在查找表中的位置,需和给定关键字值进行比较的次数的期望值称为查找算法在查找成功时的平均查找长度)。(分数:2.00)(1).0 1 2 3 4 56 7 83543165125 628793 0 1 2 3 4 5 6 7 835431693255162870 1 2 3 4 5 6 7 835431651258762930 1 2 3 4 5 6
8、7835431651258762 93(分数:1.00)A.B.C.D.A.(5*1+2+3+6)/8B.(5*1+2+3+6)/9C.(8*1)/8D.(8*1)/913.单向链表中往往含有一个头节点,该节点不存储数据元素,一般令链表的头指针指向该节点,而该节点指针域的值为第一个元素节点的指针。以下关于单链表头节点的叙述中,错误的是_。(分数:1.00)A.若在头节点中存入链表长度值,则求链表长度运算的时间复杂度为 O(1)B.在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理C.加入头节点后,代表链表的头指针不因为链表为空而改变D.加入头节点后,在链表中进行查找运算的时间复杂
9、度为 O(1)14.某双向链表中的节点如下图所示,删除 t 所指节点的操作为_。(分数:1.00)A.t-prior-next= t-next; t-next-prior= t-prior;B.t-prior-prior= t-prior, t-next-next= t-next,C.t-prior-next= t-prior; t-next-prior= t-next;D.t-prior-prior= t-next; t-next-prior= t-prior;15.下面关于图(网)的叙述中,正确的是_。(分数:1.00)A.连通无向网的最小生成树中,顶点数恰好比边数多 1B.若有向图是强连
10、通的,则其边数至少是顶点数的 2 倍C.可以采用 AOV 网估算工程的工期D.关键路径是 AOE 网中源点至汇点的最短路径16.对以下 4 个序列用直接插入排序方法由小到大进行排序时,元素比较次数最少的是_。(分数:1.00)A.89, 27, 35, 78, 41, 15B.27, 35, 41, 16, 89, 70C.15, 27, 46, 40, 64, 85D.90, 80, 45, 38, 30, 2517.广义表中的元素可以是原子,也可以是表,因此广义表的适用存储结构是_。(分数:1.00)A.链表B.静态数组C.动态数组D.散列表18.若有数组声明 a03,02,14,设编译时
11、为 a 分配的存储空间首地址为 base_a,且每个数组元素占据一个存储单元。当元素以行为序存放(即按 a0,0,1,a0,0,2,a0,0,3,a0,0,4,a0,1,1,a0,1,2,a3,2,4顺序存储),则数组元素 a2,2,2在其存储空间中相对base_a 的偏移量是_。(分数:1.00)A.8B.12C.33D.4819.某一维数组中依次存放了数据元素 12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素 54 时,所经历“比较”运算的数据元素依次为_。(分数:1.00)A.41, 52, 54B.41, 76, 54C.41, 76,
12、 52, 54D.41, 30, 76, 5420.对 n 个元素的有序表 A1n进行二分(折半)查找(除 2 取商时向下取整),查找元素 Ai(1in)时,最多于 A 中的_个元素进行比较。(分数:1.00)A.B.C.D.21.设 L 为广义表,将 head(L)定义为取非空广义表的第一个元素,tail(L)定义为取非空广义表除第一个元素外剩余元素构成的广义表。若广义表 L=(x,y,z),a,(u,t,w),则从 L 中取出原子项 y 的运算是_。(分数:1.00)A.head(tail(taiI(L)B.tail(head(head(L)C.head(tail(head(L)D.tai
13、l(tail(head(L)22.已知一棵度为 3 的树(一个节点的度是指其子树的数目,树的度是指该树中所有节点的度的最大值)中有 5 个度为 1 的节点,4 个度为 2 的节点,2 个度为 3 的节点,那么,该树中的叶子节点数目为_。(分数:1.00)A.10B.9C.8D.723.字符串采用链表存储方式时,每个节点存储多个字符有助于提高存储密度。若采用节点大小相同的链表存储串,则串比较、求子串、串连接、串替换等串的基本运算中,_。(分数:1.00)A.进行串的比较运算最不方便B.进行求子串运算最不方便C.进行串连接最不方便D.进行串替换最不方便24._是右图的合法拓扑序列。(分数:1.00
14、)A.6 5 4 3 2 1B.1 2 3 4 5 6C.5 6 3 4 2 1D.5 6 4 2 1 325.下面关于二叉树的叙述,正确的是_。(分数:1.00)A.完全二叉树的高度 h 与其节点数 n 之间存在确定的关系B.在二叉树的顺序存储和链式存储结构中,完全二叉树更适合采用链式存储结构C.完全二叉树中一定不存在度为 1 的节点D.完全二叉树中必定有偶数个叶子节点26.某一维数组中依次存放了数据元素 15,23,38,47,55,62,88,95,102,123,采用折半(二分)法查找元素 95 时,依次与_进行了比较。(分数:1.00)A.62,88,95B.62,95C.55,88
15、,95D.55,9527.若用 n 个权值构造一棵最优二叉树(哈夫曼树),则该二叉树的结点总数为_。(分数:1.00)A.2nB.2n-1C.2n+1D.2n+2一个具有 m 个节点的二叉树,其二叉链表节点(左、右孩子指针分别用 left 和 right 表示)中的空指针总数必定为 (6) 个。为形成中序(先序、后序)线索二叉树,现对该二叉链表所有节点进行如下操作:若节点 p 的左孩子指针为空,则将该左指针改为指向 p 在中序(先序、后序)遍历序列的前驱节点;若 p 的右孩子指针为空,则将该右指针改为指向 p 在中序(先序、后序)遍历序列的后继节点。假设指针 s 指向中序(先序、后序)线索二叉
16、树中的某节点,则 (7) 。(分数:2.00)A.m+2B.m+1C.mD.m-1A.sright 指向的节点一定是 s 所指节点的直接后继节点B.sleft 指向的节点一定是 s 所指节点的直接前驱节点C.从 s 所指节点出发的 right 链可能构成环D.s 所指节点的 left 和 right 指针一定指向不同的节点28.将一个无序序列中的元素依次插入到一棵_,并进行中序遍历,可得到一个有序序列。(分数:1.00)A.完全二叉树B.最小生成树C.二叉排序树D.最优叉二树29.对于哈希表,如果将装填因子 定义为表中装入的记录数与表的长度之比,那么向表中加入新记录时,_。(分数:1.00)A
17、. 的值随冲突次数的增加而递减B. 越大发生冲突的可能性就越大C. 等于 1 时不会再发生冲突D. 低于 0.5 时不会发生冲突以下关于快速排序算法的描述中,错误的是 (35) 。在快速排序过程中,需要设立基准元素并划分序列来进行排序。若序列由元素 12,25,30,45,52,67,85 构成,则初始排列为 (36) 时,排序效率最高(令序列的第一个元素为基准元素)。(分数:2.00)A.快速排序算法是不稳定的排序算法B.快速排序算法在最坏情况下的时间复杂度为 O(log2n)C.快速排序算法是一种分治算法D.当输入数据基本有序时,快速排序算法具有最坏情况下的时间复杂度A.45, 12, 3
18、0, 25,67, 52, 85B.85, 67, 52, 45, 30, 25, 12C.12, 25, 30, 45, 52, 67, 85D.45, 12, 25, 30, 85, 67, 5230.下面关于哈夫曼树的叙述中,正确的是_。(分数:1.00)A.哈夫曼树一定是完全二叉树B.哈夫曼树一定是平衡二叉树C.哈夫曼树中权值最小的两个结点互为兄弟结点D.哈夫曼树中左孩子结点小于父结点、右孩子结点大于父结点31.给定一个有 n 个元素的有序线性表。若采用顺序存储结构,则在等概率前提下,删除其中的一个元素平均需要移动_个元素。(分数:1.00)A.(n+1)/2B.n/2C.(n-1)/
19、2D.1已知一个二叉树的先序遍历序列为、,中序遍历序列为、,则该二叉树的后序遍历序列为 (29) 。对于任意一棵二叉树,叙述错误的是 (30) 。(分数:2.00)A.、B.、C.、D.、A.由其后序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列B.由其先序遍历序列和后序遍历序列可以构造该二叉树的中序遍历序列C.由其层序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列D.由其层序遍历序列和中序遍历序列不能构造该二叉树的后序遍历序列二、案例分析试题(总题数:6,分数:90.00)32.阅读下列说明和 C 代码,回答问题。说明堆数据结构定义如下。对于 n 个元素的关键字序列 a1,a 2
20、,a n,当且仅当满足下列关系时称其为堆。在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称为小顶堆。堆常用完全二叉树表示,图 8.7 是一个大顶堆的例子。(分数:15.00)_33.阅读下列说明和 C 代码,回答问题。说明对有向图进行拓扑排序的方法是:(1)初始时拓扑序列为空。(2)任意选择一个入度为 0 的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧。(3)重复(2),直到不存在入度为 0 的顶点为止(若所有顶点都进入拓扑序列则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。函数 int* TopSort(LinkedDigraph
21、G)的功能是对有向图 G 中的顶点进行拓扑排序,返回拓扑序列中的顶点编号序列,若不能完成拓扑排序,则返回空指针。其中,图 G 中的顶点从 1 开始依次编号,顶点序列为v1,v 2,.,v n,图 G 采用邻接表示,其数据类型定义如下。#define MAXVNUM 50 /*最大顶点数*/typedef struct ArcNode /*表节点类型*/int adjvex; /*邻接顶点编号*/struct ArcNode *nextarc; /*指示下一个邻接顶点*/ArcNode;typedef struct AdjList /*头节点类型*/char vdata; /*顶点的数据信息*/
22、ArcNode *firstarc; /*指向邻接表的第一个表结点*/AdjList;typedef struct LinkedDigraph /*图的类型*/int n; /*图中顶点个数*/AdjList Vhead MAXVNUM; /*所有顶点的头结点数组*/LinkedDigraph;例如,某有向图 G 如图 8.8 所示,其邻接表如图 8.9 所示。函数 TopSort 中用到了队列结构(Queue 的定义省略),实现队列基本操作的函数原型如下表所示:函数原型 说明void InitQueue(Queue* Q) 初始化队列(构造一个空队列)bool IsEmpty(Queue Q
23、) 判断队列是否为空,若是则返回 true,否则返回 falsevoid EnQueue(Queue* Q,int e) 元素入队列void DeQueue(Queue* Q, int* p) 元素出队列C 代码int *TODSort (LinkedDigraph G) ArcNode *p; /*临时指针,指示表结点*/Queue Q;/*临时队列,保存入度为 0 的顶点编号*/int k=0; /*临时变量,用作数组元素的下标*/int j=0,w=0; /*临时变量,用作顶点编号*/int *topOrdert *inDegree;topOrder=(int*)malloc(G.n+1
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 软件 设计师 数据结构 答案 解析 DOC
