【数据结构_选择题】(D22 0520)

1、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。 ( A )

  A 顺序表
  B 双链表
  C 带头结点的双循环链表
  D 单循环链表


2、下列数据结构具有记忆功能的是( C )

  A 队列
  B 循环队列
  C 栈
  D 顺序表

  分析: 理解记忆功能

  栈的特点是 先进栈的后出栈,后进栈的先出栈,所以对一个栈进行出栈操作,出来的元素肯定是最后存入栈中的元素,所以栈有记忆功能

  队列的特点是 先进先出,取队列的第一个元素,得到的是最先存入队列的元素,而不是上一个存入队列的元素,所以没有记忆功能


3、循环队列放在一维数组A[0…M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空,下列判断队空和队满的条件中,正确的是 ( A )

  A 队空:end1 == end2; 队满:end1 == (end2+1)modM
  B 队空:end1 == end2; 队满:end2 == (end1+1)mod(M-1)
  C 队空:end2 == (end1+1)modM ; 队满:end1 == (end2+1)modM
  D 队空:end1 == (end2+1)modM; 队满:end2 == (end1+1)mod(M-1)

  分析:

  end1 指向队头元素,end2 指向队尾元素的后一个位置,又因为循环队列放在一维数组A[0…M-1]中,那么end1指向队头元素即A[0],故end1 == 0。当队列初始化时,入队操作是把数据存放在数组A当中,然后end2自增,即可知end2 初值为0。因此,可知空队的条件是end1 == end2。

  考虑队列满情况,因为队列最多能容纳 M-1 个元素,假设队列存储在下标为0 到下标为M-2 的M-1 个区域,队头为A[0],队尾为A[M-2],此时队列满,end1 指向队头元素,可知end1=0;end2 指向队尾元素的后一个位置,可知end2=M-2+1=M-1。所以可知队满的条件为end1 == (end2+1) mod M,选A。

  补充: 循环队列的相关条件和公式

  队头指针是front,队尾指针是rear,QueueSize为循环队列的最大长度

条件 公式
队空 front == rear
队满 front == (rear + 1) % QueueSize
队列长度 (rear - front + QueueSize) % QueueSize
入队 (rear + 1) % QueueSize
出队 (front +1 % QueueSize)

4、对递归程序的优化的一般的手段为( A )

  A 尾递归优化
  B 循环优化
  C 堆栈优化
  D 停止值优化

  分析: 对于递归程序常见的优化手段有尾递归迭代循环

   尾递归:在每一次递归的过程中保持了上一次计算的状态,也就是“线性迭代过程”,即在函数返回时,调用自身本身 。尾递归和一般的递归不同在对内存的占用,普通递归创建stack累积而后计算收缩;而尾递归只会占用恒量的内存,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。 尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。


5、将一颗有 100 个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根节点编号为 1 ,则编号为 98 的节点的父节点编号为( C )

  A 47
  B 48
  C 49
  D 50

  分析: 对于完全二叉树

    偶数节点的父节点编号 = 该 节 点 编 号 2 =\frac{该节点编号}{2} =2该节点编号​,奇数节点的父节点编号 = 该 节 点 编 号 − 1 2 =\frac{该节点编号-1}{2} =2该节点编号−1​。

    本题98是偶数,其父节点编号 = 98 2 = 49 =\frac{98}{2}=49 =298​=49


6、将一棵二叉树的根结点放入队列,然后递归的执行如下操作,将出队结点所有子结点加入队。以上操作可以实现哪种遍历( D)

  A 前序遍历
  B 中序遍历
  C 后序遍历
  D 层序遍历

  分析: 这道题分两步:① 根节点放入队列 ② 递归执行:将出啊对节点的所有子节点加入队列。

  因此,将根节点出队,子结点入队,那么队列中恰好为第一层的所有节点,将第一层节点依次出队,子结点入队,队列中为第二层所有节点,以此类推为层序遍历。


7、有 1000 个无序的整数,希望使用最快的方式找出前 50 个最大的,最佳的选择是( C )

  A 冒泡排序
​  B 基数排序
​  C 堆排序
​  D 快速排序

  分析: 找出若干个数中最大/最小的前K个数,用堆排序是最好的。

     找最大数,用小根堆;找最小数,用大根堆


8、以下数据结构说法,错误的是( C )

  A 红黑树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)
  B B+树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)
  C Hash表插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(n)
  D 排序链表插入操作的平均时间复杂度为O(n),最坏时间复杂度为O(n)

  分析: 各种数据结构的search、insert和delete操作在平均情况下的时间复杂度比较

数据结构 serch insert delete
数组 O(n) 有序数组折半查找时 O( log ⁡ 2 n \log_2n log2​n) O(n) O(n)
双向链表 O(n) O(1) O(1)
排序二叉树 O( log ⁡ 2 n \log_2n log2​n) O( log ⁡ 2 n \log_2n log2​n) O( log ⁡ 2 n \log_2n log2​n)
哈希表(n与槽数m成正比) O(1) O(1) O(1)

9、将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是 ( D )

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

  分析:归并排序基本思想是多次将两个或两个以上的有序表合并成一个新的有序表。最简单的归并是直接将两个有序的子表合并成一个有序的表。归并排序最好情况下的复杂度为 O(n)。


10、设图G的相邻矩阵如下,则G的顶点数和边数分别为 ( A )

​ 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 \begin{matrix} 0&1&1&1&1\\ 1&0&1&0&0\\ 1&1&0&1&1\\ 1&0&1&0&1\\ 1&0&1&1&0 \end{matrix} 01111​10100​11011​10101​10110​

  A 5,8
  B 4,10
  C 5,6
  D 4,5

  分析: 图论的基本知识

     首先5行,所以5个顶点。由握手定理可知,

      顶 点 度 数 和 = 2 × 边 数 顶点度数和 = 2 \times 边数 顶点度数和=2×边数, 各 行 顶 点 度 数 = 矩 阵 的 各 行 之 和 各行顶点度数 = 矩阵的各行之和 各行顶点度数=矩阵的各行之和

     本题各行的顶点度数为4,2,4,3,3, 边数 = (4+2+4+3+3)/2=8


【数据结构_选择题】(D22 0520)相关推荐

  1. 【数据结构_选择题】(D21 0519)

    [数据结构_选择题](D21 0519) 1.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度 ( D )   A O(log2n)   B O(1) ...

  2. 【数据结构_选择题】(D20 0518)

    [数据结构_选择题](D20 0518) 1.对于顺序存储的线性表,访问结点和增加结点的时间复杂度为( C )   A O(n) O(n)   B O(n) O(1)   C O(1) O(n)    ...

  3. 2009年9月全国计算机等级考试四级网络工程师试卷_选择题

    2009年9月全国计算机等级考试四级网络工程师试卷_选择题(2)     <?xml:namespace prefix = o ns = "urn:schemas-microsoft- ...

  4. 希尔排序python 简书_数据结构_排序_直接插入+希尔排序

    数据结构_排序_直接插入排序+希尔排序 其实主要是为了讲述希尔排序,不过插入排序是希尔排序的基础,因此先来讲直接插入排序. 一.直接插入排序 1.原理 下标 0 1 2 3 4 5 6 7 8 -- ...

  5. 数据结构c语言版袁和金答案,_数据结构_课程教学中的案例设计及应用_袁和金.pdf...

    _数据结构_课程教学中的案例设计及应用_袁和金 第 16 期 90 2013 年 8 月 25 日 Computer Education G642 袁和金 (华北电力大学 计算机系,河北 保定 071 ...

  6. 陈越数据结构_第一周

    陈越数据结构_第一周 1. 最大子列和问题 是第一周最后讲到的4种算法的实验题,属于基本要求,一定要做: 题目见PAT 输入样例: 6 -2 11 -4 13 -5 -2 输出样例: 20 1.1 解 ...

  7. 牛客网_Go语言相关练习_选择题(2)

    注:题目来源均出自牛客网. 一.选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用. Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有. C选项函数声明语法有 ...

  8. 云南计算机专升本数据结构_怎么查找云南省2019年专升本计算机专业试题

    sean容容 2019-12-06 05:38 1360 计算机及应用专业 综合考试卷 一.单项选择题 1.中央处理单元(CPU)的两个主要组成部分是运算器和( ) A.寄存器 B.控制器 C.主存储 ...

  9. 数据结构_浙大(C语言) 20211228-20220108

    <数据结构> 浙大(C语言) 课程练习网站: 拼题A(Programming Teaching Assistant):https://pintia.cn/ 本课程的编程练习将在这里布置. ...

最新文章

  1. 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”的解决方法...
  2. 数据集合 oracle,oracle集合
  3. common.logging和log4j比较
  4. unity 脚本中 调用另一个脚本_Unity 2019.4 脚本生命周期
  5. CDN预热与刷新在促销活动中的应用
  6. linux dev sda1 满了,/dev/sda1把磁盘几乎都满了,我该怎么办呢??
  7. 使用php自动将文章标题或内容进行分词,添加和删除标签功能实例!
  8. java baas_调试后台Baas(Java):调试用户自己的java代码
  9. 故障恢复:一次底层超融合故障导致的异常处理
  10. Python 修改图片的时候抗锯齿
  11. 电力拖动自动控制系统_建筑电气控制系统安装
  12. 华为认证双IE网络工程师,花了三天时间整理的OSPF详解,建议收藏
  13. 浅谈数据挖掘中的关联规则挖掘
  14. android Alarm 闹钟
  15. 研究生毕业后工资高多少?
  16. Java数据类型总结
  17. python 判断当前日期是否为股票交易日
  18. PPT学习整理(八)PPT动画全入门
  19. 计算机电源风扇维修,电脑电源风扇声音大怎么办?清理风扇噪音的解决办法
  20. 微博付费打赏架构:一个社交场景下准金融项目开发和实践

热门文章

  1. NF5280M5 – BIOS设置
  2. halcon例子学习matching书页匹配
  3. 511遇见易语言流程控制计次循环首
  4. 泰拉瑞亚linux开服教程视频,泰拉瑞亚1.4版本服务器创建教程
  5. Python可视化交互库——dash
  6. [堆优化Dijkstra] 小木乃伊到我家
  7. 小木乃伊到我家(spfa算法)
  8. 微信push服务器,GitHub - brucx/mp-push-nestjs: 微信公众号消息推送服务,类似“server酱”,提供Docker镜像部署...
  9. (转载)混合图层算法
  10. 3D化工产品建模工业三维立体模型在线展示