【计算机类职业资格】程序员-数据结构与算法及答案解析.doc
《【计算机类职业资格】程序员-数据结构与算法及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】程序员-数据结构与算法及答案解析.doc(25页珍藏版)》请在麦多课文档分享上搜索。
1、程序员-数据结构与算法及答案解析(总分:79.00,做题时间:90 分钟)一、B综合知识试题/B(总题数:33,分数:35.00)1.若二维数组 P15,08的首地址为 base,数组元素按行存储,且每个元素占用 1 个存储单元,则元素 P3,3在该数组空间的地址为_。(分数:1.00)A.base+13B.base+16C.base+18D.base+212.对图 8-22 所示的二叉树进行中序遍历(左子树、根、右子树)的结果是_。 (分数:1.00)A.2 5 3 4 6 1B.2 5 3 4 1 6C.2 6 5 4 1 3D.2 6 4 5 3 13.在执行递归过程时,通常使用的数据结
2、构是_。(分数:1.00)A.堆栈(stack)B.队列(queue)C.图(graph)D.树(tree)4.广度优先遍历的含义是:从图中某个顶点 v 出发,在访问了 v 之后依次访问 v 的各个未被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,且“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有己被访问的顶点的邻接点都被访问到。_是图 8-21 的广度优先遍历序列。 (分数:1.00)A.1 2 6 3 4 5B.1 2 3 4 5 6C.1 6 5 2 3 4D.1 6 4 5 2 35.若线性表(24,13,31,6,15,18,8)采用散列(
3、Hash)法进行存储和查找,设散列函数为 H(Key)=Key mod 11,则构造散列表时发生冲突的元素为_(其中的 mod 表示整除取余运算)。(分数:1.00)A.24 和 13B.6 和 15C.6 和 24D.18 和 86.采用一维数组 S 存储一个 n 阶对称矩阵 A 的下三角部分(按行存放,包括主对角线),设元素 Aij存放在 Sk中(i、j、k 均从 1 开始取值),且 S1=A11,则 k 与 i、j 的对应关系是_。例如,元素 A32存在 S5中。(分数:1.00)A.B.C.D.7.数据结构中的树最适合用来表示_的情况。(分数:1.00)A.数据元素有序B.数据元素之间
4、具有多对多关系C.数据元素无序D.数据元素之间具有一对多关系8.若二叉树的前序遍历序列与中序遍历序列相同且树中节点数大于 1,则该二叉树的_。(分数:1.00)A.只有根节点无左予树B.只有根节点无右子树C.非叶子节点只有左子树D.非叶子节点只有右子树9.线性表采用顺序存储结构,若表长为 m,且在任何一个合法插入位置上进行插入操作的概率相同,则插入一个元素平均移动_个元素。(分数:1.00)A.m-1B.m/2C.m/2+1D.m10.二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:特其左子树非空,则左子树上所有节点的值均小于根节点的值;若其右子树非空,则右子树上所有节点的值均大于根节点
5、的值;其左、右子树本身就是两棵二叉排序树。根据该定义,对一棵非空的二叉排序树进行_遍历,可得到一个节点元素的递增序列。(分数:1.00)A.前序(根、左、右)B.中序(左、根、右)C.后序(左、右、根)D.层序(从树根开始,按层次)若将图 8-23(a)所示的无向图改为完全图,则还需要增加U (24) /U条边;图(b)的邻接矩阵表示为U (25) /U(行列均以 A、B、C、D、E 为序)。(分数:2.00)A.1B.2C.5D.15A.B.C.D.11.数组 A-55,08按列存储。若第一个元素的首地址为 100,且每个元素占用 4 个存储单元,则元素 A2,3的存储地址为_。(分数:1.
6、00)A.244B.260C.364D.30012.某循环队列的容量为 M,队头指针指向队头元素,队尾指针指向队尾元素之后,如图 8-18 所示(M=8),则队列中的元素数目为_(MOD 表示整除取余运算)。 (分数:1.00)A.rear-frontB.front-rearC.(rear-front+M)MOD MD.(front-rear+M)MOD M13.用二分法来检索数据,最确切的说法是_。(分数:1.00)A.仅当数据随机排列时,才能正确地检索数据B.仅当数据有序排列时,才能正确地检索数据C.仅当数据量较大时,才能有效地检索数据D.仅当数据量较小时,才能有效地检索数据14.设数组
7、a16,09的元素以行为主序存放,每个元素占用一个存储单元,则数组元素 a3,3的地址为_。(分数:1.00)A.a+23B.a+27C.a+39D.a+3515.与单向链表相比,双向链表_。(分数:1.00)A.需要较少的存储空间B.遍历元素需要的时问较短C.较易于访问相邻节点D.较易于插入和删除元素16.对如图 8-24 所示的二叉树进行后序遍历(左子树、右子树、根节点)的结果是_。 (分数:1.00)A.5 2 3 4 6 1B.5 2 3 4 1 6C.2 6 4 1 3 5D.2 5 6 4 3 117.采用哈希(或散列)技术构造查找表时,需要考虑冲突(碰撞)的处理,冲突是指_。(分
8、数:1.00)A.关键字相同的记录被映射到不同的哈希地址B.关键字依次被映射到编号连续的哈希地址C.关键字不同的记录被映射到同一个哈希地址D.关键字的数目超过哈希地址的数目满二叉树的特点是每层上的节点数都达到最大值,因此对于高度为 h(h1)的满二叉树,其节点总数为U (18) /U。对非空满二叉树,由根节点开始,按照先根后子树、先左子树后右子树的次序,从 1,2,3,依次编号,则对于树中编号为 i 的非叶子节点,其右子树的编号为U (19) /U(高度为3 的满二叉树如图 8-20 所示)。(分数:2.00)A.2hB.2h-1C.2h-1D.2h-1+1A.2iB.2i-1C.2i+1D.
9、2i+218.设初始栈为空,s 表示入栈操作,x 表示出栈操作,则_是合法的操作序列。(分数:1.00)A.sxxsssxxxB.xxssxxssC.sxsxssxxD.xssssxxx19.由关键字序列(12,7,36,25,18,2)构造一棵二叉排序树(初始为空,第一个关键字作为根节点插入,此后对于任意关键字,若小于根节点的关键字,则插入左子树中,若大于根节点的关键字,则插入右子树中,且左、右子树均为二叉排序树),该二叉排序树的高度(层数)为_。(分数:1.00)A.6B.5C.4D.320.两个递增序列 A 和 B 的长度分别为 m 和 n(mn),将两者归并为一个长度为 m+n 的递增
10、序列时,_,归并过程中元素的比较次数最少。(分数:1.00)A.当 A 的最大元素大于 B 的最大元素时B.当 A 的最大元素小于 B 的最小元素时C.当 A 的最小元素大于 B 的最小元素时D.当 A 的最小元素小于 B 的最大元素时21.对于 n 个元素的关键字序列k 1,k 2,k n,若将其按次序对应到一棵具有 n 个节点的完全二叉树上,使得任意节点都不大于其孩子节点(若存在孩子节点),则称其为小顶堆。根据以上定义,_是小顶堆。(分数:1.00)A.B.C.D.22.栈的运算特点是后进先出。元素 a、b、c、d 依次入栈,则不能得到的出栈序列是_。(分数:1.00)A.a b c dB
11、.c a b dC.d c b aD.b c d a23.对连通图进行遍历前设置所有顶点的访问标志为 false(未被访问),遍历图后得到一个遍历序列,初始状态为空。深度优先遍历的含义是:从图中某个未被访问的顶点 v 出发开始遍历,先访问 v 并设置其访问标志为 true(已访问),同时将 v 加入遍历序列,再从 v 的未被访问的邻接顶点中选一个顶点,进行深度优先遍历;若 v 的所有邻接点都已访问,则回到 v 在遍历序列的直接前驱顶点,再进行深度优先遍历,直至图中所有顶点被访问过。_是图 8-19 的深度优先遍历序列。 (分数:1.00)A.1 2 3 4 6 5B.1 2 6 3 4 5C.
12、1 6 2 5 4 3D.1 2 3 4 5 624.对具有 n 个元素的顺序表(采用顺序存储的线性表)进行_操作,其耗时与 n 的大小无关。(分数:1.00)A.在第 i(1in)个元素之后插入一个新元素B.删除第 i(1in)个元素C.对顺序表中的元素进行排序D.访问第 i(1in)个元素的前驱和后继25.如果待排序序列中两个元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。_是稳定的排序方法,因为这种方法在比较相邻元素时,值相同的元素并不进行交换。(分数:1.00)A.冒泡排序B.希尔排序C.快速排序D.简单选择排序26.n 个元素依次全部进入栈后,再陆续出栈
13、并经过一个队列输出。那么,_。(分数:1.00)A.元素的出队次序与进栈次序相同B.元素的出队次序与进栈次序相反C.元素的进栈次序与进队次序相同D.元素的出栈次序与出队次序相反27.对于长度为 11 的顺序存储的有序表,若采用折半查找(向下取整),则找到第 5 个元素需要与表中的_个元素进行比较操作(包括与第 5 个元素的比较)。(分数:1.00)A.5B.4C.3D.228.若一个栈以向量 V1n存储,且空栈的栈顶指针 top 为 n+1,则将元素 x 入栈的正确操作是_。(分数:1.00)A.top=top+1;Vtop=x;B.Vtop=x;top=top+1;C.top=top-1;V
14、top=x;D.Vtop=x;top=top-1;29.若原始数据序列(23,4,45,67,12,8,19,7)采用直接插入排序法(顺序地将每个元素插入到它之前的适当位置)排序,则进行完第 4 趟后的排序结果是_。(分数:1.00)A.4,8,45,23,67,12,19,7B.4,7,8,12,23,45,67,19C.4,12,8,19,7,23,45,67D.4,12,23,45,67,8,19,730.若字符串 s 的长度为 n(n1)且其中的字符互不相同,则 s 的长度为 2 的子串有_个。(分数:1.00)A.nB.n-1C.n-2D.231.在任意一棵非空的二叉树中,终端节点(
15、叶子)的数目总是比具有两个孩子的非终端节点的数目_。(分数:1.00)A.多 0 个B.多 1 个C.多 2 个D.多 3 个二、B案例分析试题/B(总题数:8,分数:44.00)B试题一/B阅读以下说明和 C 语言函数,回答问题。说明函数 sort(NODE*head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻节点中的元素,若较小的元素在后面,则交换这两个节点中的元素值。其中,head 指向链表的头节点。排序时,为了避免每趟都扫描到链表的尾节点,设置一个指针 endptr,使其指向下趟扫描需要到达的最后一个节点。例如,对于图 8-25(a)所示的链表进行一趟冒泡排序后
16、,得到图 8-25(b)所示的链表。(分数:5.00)(1).(分数:1.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_B试题二/B阅读以下说明和 C 程序,回答问题。说明下面的程序用 Dole Rob 算法生成 N 阶(N 为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从 1 开始,按如下方法依次插入各自然数,直到 N2 为止。在第一行的正中插入 1。新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。若最近插入的元素是 N 的整数倍,则选同列的下一行位置
17、为新位置。例如,3 阶魔方阵如下所示:8 1 63 5 74 9 2C 程序#includestdio.h#includestdlib.h#define SIZE 50main( )int row, col, n, value; int aSIZE+1SIZE+1; /*不使用下标为 0 的元素*/printf(“请输入要输出魔方阵的阶数 n(奇数, %d):n=“, SIZE); scanf(“%d“, if(!(n%2) | n1 | U(1) /U)printf(“输入数据有误!/n“); exit(0); row=1; col=(n+1)/2; value=1; while(value
18、=U (2) /U) arowcol=value; /*计算下一位置*/if(value%n!=0)row-; U(3) /U; if(row1)row=n; if(coln)U (4) /U; else row+; value=U (5) /U; printf(“/n%d 阶魔方阵如下所示:/n/n“, n); for(row=1; row=n; row+)for(col=1; col=n; col+)printf(“%5d“, arowcol); printf(“/n“); (分数:5.00)(1).(分数:1.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_B
19、试题三/B阅读以下说明和 C 函数,回答问题。说明计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的汁算过程如下。依次将 46、5、120、37 压入栈中。遇到“-”,取出 37、120,计算 120-37=83,将其压入栈中。遇到“*”,取出 83、5,计算 583
20、=415,将其压入栈中。遇到“+”,取出 415、46,计算 46+415=461,将其压入栈中。表达式结束,则计算过程完成。函数 computing(char expt,int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组 expr)的值,并通过参数 result 返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“/”)。函数 computing 中所用栈的基本操作的函数原型说明如下。void InitStack(STACK
21、*s):初始化栈。void Push(STACK *s, int e):将一个整数压栈,栈中元素数目增 1。void Pop(STACK *s):栈顶元素出栈,栈中元素数目减 1。int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。int IsEmpty(STACK s):若 s 是空栈,则返回 1;否则返回 0。C 函数int computing(char expr, int *result)STACK s; int tnum, a, b; char *ptr; InitStack( ptr=expr; pstr /*字符指针指向后缀表达式串的第一个字符*/while
22、 (*ptr!=/0) if(*ptr= ) /*当前字符是空格*/U (1) /U; /*字符指针指向下一字符*/continue; elseif (isdigit(*ptr) /*当前字符是数字,则将该数字开始的数字串转换为数值*/tnum=U (2) /U; while (*ptr=0 ptr+; push(U (4) /U); else /*当前字符是运算符或其他符号*/if (*ptr=+|*ptr=-|*ptr=*|*ptr=/)if(!IsEmpty(S)a=Top(s); Pop( /*取运算符的第二个运算数*/if(!IsEmpty(S)b=Top(s); Pop( /*取运
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 程序员 数据结构 算法 答案 解析 DOC
