欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    软件设计师数据结构二真题无答案.docx

    • 资源ID:27432586       资源大小:140.16KB        全文页数:27页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件设计师数据结构二真题无答案.docx

    1、软件设计师数据结构二真题无答案软件设计师-数据结构(二)(总分131,考试时间90分钟)一、综合知识试题1. 具有n个顶点、e条边的图采用邻接表存储结构,进行深度优先遍历和广度优先遍历运算的时间复杂度均为_。A. O(n2)B. O(e2)C. (n*e)D. D(n+e)2. 对于长度为,m(m1)的指定序列,通过初始为空的一个栈、一个队列后,错误的叙述是_。A. 若入栈和入队的序列相同,则出栈序列和出队序列可能相同B. 若入栈和入队的序列相同,则出栈序列和出队序列可以互为逆序C. 入队序列与出队序列关系为1:1,而入栈序列与出栈序列关系是1:n(n1)D. 入栈序列与出栈序列关系为1:1,

    2、而入队序列与出队序列关系是1:n(n1)3. 下面关于二叉排序树的叙述中,错误的是_。A. 对二叉排序树进行中序遍历,必定得到节点关键字的有序序列B. 依据关键字无序的序列建立二叉排序树,也可能构造出单支树C. 若构造二叉排序树时进行平衡化处理,则根节点的左子树节点数与右子树节点数的差值一定不超过1D. 若构造二叉排序树时进行平衡化处理,则根节点的左子树高度与右子树高度的差值一定不超过14. 邻接矩阵和邻接表是图(网)的两种基本存储结构,对于具有,n个顶点、e条边的图,_。A. 进行深度优先遍历运算所消耗的时间与采用哪一种存储结构无关B. 进行广度优先遍历运算所消耗的时间与采用哪一种存储结构无

    3、关C. 采用邻接表表示图时,查找所有顶点的邻接顶点的时间复杂度为O(n*e)D. 采用邻接矩阵表示图时,查找所有顶点的邻接顶点的时间复杂度为O(n2)5. 用关键字序列10、20、30、40、50构造的二叉树排序(二叉查找树)为_。6. 设有如下所示的下三角矩阵A0.8,0.8,将该三角矩阵的非零元素(即行下标不小于列下标的所有元素)按行优先压缩存储在数组M1.m中,则元素Ai,j(0i8,ji)存储在数组M的_中。 7. _的邻接矩阵是一个对称矩阵。A. 无向图 B. AOV网C. AOE网 D. 有向图8. 设循环队列Q的定义中有rear和len两个域变量,其中rear表示队尾元素的指针,

    4、len表示队列的长度,如下图所示(队列长度为3,队头元素为e)。设队列的存储空间容量为M,则队头元素的指针为_。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)所示的有序树转化为二叉树后如图(b)所示。 A. 先序 B. 中序C. 后序 D. 层序10. 下面关于查找运算及查找表的叙述中,错误的是_。A. 哈希表可以动态创建B. 二叉排序树属于动态查找表C. 折半查找

    5、要求查找表采用顺序存储结构或循环链表结构D. 顺序查找方法既适用于顺序存储结构,也适用于链表结构11. 下面关于栈和队列的叙述中,错误的是_。A. 栈和队列都是操作受限的线性表B. 队列采用单循环链表存储时,只需设置队尾指针就可使入队和出队操作的时间复杂度都为O(1)C. 若队列的数据规模n可以确定,则采用顺序存储结构比链式存储结构效率更高D. 利用两个栈可以模拟一个队列的操作,反之亦可设一个包含N个顶点、E条边的简单有向图采用邻接矩阵存储结构(矩阵元素Aij等于1/0分别表示顶点i与顶点j之间有/无弧),则该矩阵的元素数目为 (11) ,其中非零元素数目为 (12) 。12. A. E2B.

    6、 N2C. N2-E2D. N2+E213. A. N B. N+EC. E D. N-E14. 栈是一种按“后进先出”原则进行插入和删除操作的数据结构,因此,_必须用栈。A. 实现函数或过程的递归调用及返回处理时 B. 将一个元素序列进行逆置C. 链表节点的申请和释放 D. 可执行程序的装入和卸载已知一个线性表(16,25,35,43,51,62,87,93),采用散列函数H(Key)=Key mod 7将元素散列到表长为9的散列表中。若采用线性探测的开放定址法解决冲突(顺序地探查可用存储单元),则构造的哈希表为 (15) ,在该散列表上进行等概率成功查找的平均查找长度为 (16) (确定为

    7、记录在查找表中的位置,需和给定关键字值进行比较的次数的期望值称为查找算法在查找成功时的平均查找长度)。15. 0 1 2 3 4 5 6 7 8 35 43 16 51 25 62 87 93 0 1 2 3 4 5 6 7 8 35 43 16 93 25 51 62 87 0 1 2 3 4 5 6 7 8 35 43 16 51 25 87 62 93 0 1 2 3 4 5 6 7 8 35 43 16 51 25 87 62 93 16. A. (5*1+2+3+6)/8 B. (5*1+2+3+6)/9C. (8*1)/8 D. (8*1)/917. 单向链表中往往含有一个头节点,

    8、该节点不存储数据元素,一般令链表的头指针指向该节点,而该节点指针域的值为第一个元素节点的指针。以下关于单链表头节点的叙述中,错误的是_。A. 若在头节点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)B. 在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理C. 加入头节点后,代表链表的头指针不因为链表为空而改变D. 加入头节点后,在链表中进行查找运算的时间复杂度为O(1)18. 某双向链表中的节点如下图所示,删除t所指节点的操作为_。A. t-prior-next= t-next; t-next-prior= t-prior;B. t-prior-prior= t-pri

    9、or, 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; 19. 下面关于图(网)的叙述中,正确的是_。A. 连通无向网的最小生成树中,顶点数恰好比边数多1B. 若有向图是强连通的,则其边数至少是顶点数的2倍C. 可以采用AOV网估算工程的工期D. 关键路径是AOE网中源点至汇点的最短路径20. 对以下4个序列用直接插入排序方法由小到大进行排序时,元素比较次数最少的是_。A. 89, 27, 35, 78, 41,

    10、 15B. 27, 35, 41, 16, 89, 70C. 15, 27, 46, 40, 64, 85D. 90, 80, 45, 38, 30, 2521. 广义表中的元素可以是原子,也可以是表,因此广义表的适用存储结构是_。A. 链表 B. 静态数组C. 动态数组 D. 散列表22. 若有数组声明a0.3,0.2,1.4,设编译时为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的偏

    11、移量是_。A. 8 B. 12C. 33 D. 4823. 某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历“比较”运算的数据元素依次为_。A. 41, 52, 54 B. 41, 76, 54C. 41, 76, 52, 54 D. 41, 30, 76, 5424. 对n个元素的有序表A1.n进行二分(折半)查找(除2取商时向下取整),查找元素Ai(1in)时,最多于A中的_个元素进行比较。 25. 设L为广义表,将head(L)定义为取非空广义表的第一个元素,tail(L)定义为取非空广义表除第

    12、一个元素外剩余元素构成的广义表。若广义表L=(x,y,z),a,(u,t,w),则从L中取出原子项y的运算是_。A. head(tail(taiI(L)B. tail(head(head(L)C. head(tail(head(L)D. tail(tail(head(L)26. 已知一棵度为3的树(一个节点的度是指其子树的数目,树的度是指该树中所有节点的度的最大值)中有5个度为1的节点,4个度为2的节点,2个度为3的节点,那么,该树中的叶子节点数目为_。A. 10 B. 9C. 8 D. 727. 字符串采用链表存储方式时,每个节点存储多个字符有助于提高存储密度。若采用节点大小相同的链表存储串

    13、,则串比较、求子串、串连接、串替换等串的基本运算中,_。A. 进行串的比较运算最不方便 B. 进行求子串运算最不方便C. 进行串连接最不方便 D. 进行串替换最不方便28. _是右图的合法拓扑序列。 A. 6 5 4 3 2 1 B. 1 2 3 4 5 6C. 5 6 3 4 2 1 D. 5 6 4 2 1 329. 下面关于二叉树的叙述,正确的是_。A. 完全二叉树的高度h与其节点数n之间存在确定的关系B. 在二叉树的顺序存储和链式存储结构中,完全二叉树更适合采用链式存储结构C. 完全二叉树中一定不存在度为1的节点D. 完全二叉树中必定有偶数个叶子节点30. 某一维数组中依次存放了数据元

    14、素15,23,38,47,55,62,88,95,102,123,采用折半(二分)法查找元素95时,依次与_进行了比较。A. 62,88,95 B. 62,95C. 55,88,95 D. 55,9531. 若用n个权值构造一棵最优二叉树(哈夫曼树),则该二叉树的结点总数为_。A. 2n B. 2n-1C. 2n+1 D. 2n+2一个具有m个节点的二叉树,其二叉链表节点(左、右孩子指针分别用left和right表示)中的空指针总数必定为 (6) 个。为形成中序(先序、后序)线索二叉树,现对该二叉链表所有节点进行如下操作:若节点p的左孩子指针为空,则将该左指针改为指向p在中序(先序、后序)遍历

    15、序列的前驱节点;若p的右孩子指针为空,则将该右指针改为指向p在中序(先序、后序)遍历序列的后继节点。假设指针s指向中序(先序、后序)线索二叉树中的某节点,则 (7) 。32. A. m+2 B. m+1C. m D. m-133. A. sright指向的节点一定是s所指节点的直接后继节点B. sleft指向的节点一定是s所指节点的直接前驱节点C. 从s所指节点出发的right链可能构成环D. s所指节点的left和right指针一定指向不同的节点34. 将一个无序序列中的元素依次插入到一棵_,并进行中序遍历,可得到一个有序序列。A. 完全二叉树 B. 最小生成树C. 二叉排序树 D. 最优叉

    16、二树35. 对于哈希表,如果将装填因子定义为表中装入的记录数与表的长度之比,那么向表中加入新记录时,_。A. 的值随冲突次数的增加而递减 B. 越大发生冲突的可能性就越大C. 等于1时不会再发生冲突 D. 低于0.5时不会发生冲突以下关于快速排序算法的描述中,错误的是 (35) 。在快速排序过程中,需要设立基准元素并划分序列来进行排序。若序列由元素12,25,30,45,52,67,85构成,则初始排列为 (36) 时,排序效率最高(令序列的第一个元素为基准元素)。36. A. 快速排序算法是不稳定的排序算法B. 快速排序算法在最坏情况下的时间复杂度为O(log2n)C. 快速排序算法是一种分

    17、治算法D. 当输入数据基本有序时,快速排序算法具有最坏情况下的时间复杂度37. A. 45, 12, 30, 25,67, 52, 85B. 85, 67, 52, 45, 30, 25, 12C. 12, 25, 30, 45, 52, 67, 85D. 45, 12, 25, 30, 85, 67, 5238. 下面关于哈夫曼树的叙述中,正确的是_。A. 哈夫曼树一定是完全二叉树B. 哈夫曼树一定是平衡二叉树C. 哈夫曼树中权值最小的两个结点互为兄弟结点D. 哈夫曼树中左孩子结点小于父结点、右孩子结点大于父结点39. 给定一个有n个元素的有序线性表。若采用顺序存储结构,则在等概率前提下,删

    18、除其中的一个元素平均需要移动_个元素。A. (n+1)/2 B. n/2C. (n-1)/2 D. 1已知一个二叉树的先序遍历序列为、,中序遍历序列为、,则该二叉树的后序遍历序列为 (29) 。对于任意一棵二叉树,叙述错误的是 (30) 。40. A. 、 B. 、C. 、 D. 、41. A. 由其后序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列B. 由其先序遍历序列和后序遍历序列可以构造该二叉树的中序遍历序列C. 由其层序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列D. 由其层序遍历序列和中序遍历序列不能构造该二叉树的后序遍历序列二、案例分析试题1. 阅读下列说明和C代码,

    19、回答问题。 说明 堆数据结构定义如下。 对于n个元素的关键字序列a1,a2,an,当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称为小顶堆。堆常用完全二叉树表示,图8.7是一个大顶堆的例子。 堆数据结构常用于优先队列中,以维护由一组元素构成的集合。对应于两类堆结构,优先队列也有最大优先队列和最小优先队列,其中最大优先队列采用大顶堆,最小优先队列采用小项堆。以下考虑最大优先队列。 假设现已建好大顶堆A,且已经实现了调整堆的函数heapify(A,n,index)。 下面将C代码中需要完善的3个函数说明如下。 (1) heapMaximu

    20、m(A):返回大项堆A中的最大元素。 (2) heapExtractMax(A):去掉并返回大顶堆A的最大元素,将最后一个元素“提前”到堆顶位置,并将剩余元素调整成大顶堆。 (3) maxHeapInsert(A,key):把元素key插入到大顶堆A的最后位置,再将A调整成大顶堆。 优先队列采用顺序存储方式,其存储结构定义如下。 #define PARENT (i) i/2 typedef struct array int *int_array;/优先队列的存储空间首地址 int array_size;/优先队列的长度 int capacity;/优先队列存储空间的容量 ARRAY; C代码

    21、(1)函数heapMaximum int heapMaximum(ARRAY *A) return (1) ; (2)函数heapExtractMax int_heapExtractMax (ARRAY *A) int max; max=A-int_array0; (2) ; A-array_size-; Heapify (A,A-array_size,0);/将剩余元素调整成大顶堆 return max; ) (3)函数maxHeaplnsert int maxHeaplnsert (ARRAY *A,int key) int i,*p; if (A-array-size=A-capacit

    22、y)/存储空间的容量不够时扩充空间 p=(int*) realloc (A-int array, A-capacity *2*sizeof (int); if(!p) return-1; A-int_array=P; A-capacity=2 *A-capacity; A-array_size+: i= (3) ; while(i0 (4) ) A-int_array i=A-int_arrayPARENT (i); i=PARENT (i); (5) ; return 0; 问题1 根据以上说明和C代码,填充C代码中的空(1)(5)。 问题2 根据以上C代码,函数heapMaximum, h

    23、eapExtractMax和maxHeaplnsert的时间复杂度的紧致上界分别为 (6) 、 (7) 和 (8) (用O符号表示)。 问题3 若将元素10插入到堆A=(15, 13,9,5,12,8,7,4,0,6,2,1)中,调用maxHeaplnsert函数进行操作,则新插入的元素在堆A中第 (9) 个位置(从1开始)。2. 阅读下列说明和C代码,回答问题。 说明 对有向图进行拓扑排序的方法是: (1)初始时拓扑序列为空。 (2)任意选择一个入度为0的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧。 (3)重复(2),直到不存在入度为0的顶点为止(若所有顶点都进入拓扑

    24、序列则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。 函数int* TopSort(LinkedDigraph G)的功能是对有向图G中的顶点进行拓扑排序,返回拓扑序列中的顶点编号序列,若不能完成拓扑排序,则返回空指针。其中,图G中的顶点从1开始依次编号,顶点序列为v1,v2,.,vn,图G采用邻接表示,其数据类型定义如下。 #define MAXVNUM 50 /*最大顶点数*/ typedef struct ArcNode /*表节点类型*/ int adjvex; /*邻接顶点编号*/ struct ArcNode *nextarc; /*指示下一个邻接顶点*/ ArcNod

    25、e; typedef struct AdjList /*头节点类型*/ char vdata; /*顶点的数据信息*/ ArcNode *firstarc; /*指向邻接表的第一个表结点*/ AdjList; typedef struct LinkedDigraph /*图的类型*/ int n; /*图中顶点个数*/ AdjList Vhead MAXVNUM; /*所有顶点的头结点数组*/ LinkedDigraph; 例如,某有向图G如图8.8所示,其邻接表如图8.9所示。 函数TopSort中用到了队列结构(Queue的定义省略),实现队列基本操作的函数原型如下表所示: 函数原型 说明

    26、 void InitQueue(Queue* Q) 初始化队列(构造一个空队列) bool IsEmpty(Queue Q) 判断队列是否为空,若是则返回true,否则返回false void 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; /*临时

    27、变量,用作顶点编号*/ int *topOrdert *inDegree; topOrder=(int*)malloc(G.n+1)*sizeof (int);/*存储拓扑序列中的顶点编号*/ inDegree=(int+)malloc( (G.n+l)+sizeof (int)j/*存储图G中各顶点的入度*/ if (!inDegree | !topOrder) return NULL; (1) ;/*构造一个空队列*/ for(j=1;j=G.n; j+) /*初始化*/ topOrderj =0; inDegreej =0; for(j=1;j=G.n;j+) /*求图G中各顶点的入度*

    28、/ for(p=G.Vheadj.firstarc; p;p=p-nextarc) inDegree p- adjvex +=1; for(j=1;j=Gn; j+) /*将图G中入度为0的顶点保存在队列中*/ if(0=inDegreej )EnQueue(Q,j); while(!IsEmpty (Q) (2) ; /*队头顶点出队列并用w保存该顶点的编号*/ topOrderk+=w; /*将顶点w的所有邻接顶点的入度减1(模拟删除顶点w及从该顶点出发的弧的操作)*/ for(p=G.Vheadw.firstarc; p;p=p-nextarc) (3) -=1; if (0= (4) ) EnQueue (Q, p-adjvex); /*for*/ /*while*/ free (inD


    注意事项

    本文(软件设计师数据结构二真题无答案.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开