《数据结构》期末考试测试题【上】

数据结构测试题

    • 1.数据结构是指什么?
    • 2.某语句时间复杂为?
    • 3.关于数据结构的说法那个正确?
    • 4.一个算法的评价标准包括哪些方面?
    • 5.时间复杂度指的是什么?
    • 6.算法的重要特征有那些?
    • 7.某语句时间复杂为?
    • 8.存储数据时要存储什么?
    • 9.某语句时间复杂为?
    • 10.某语句时间复杂为?
    • 11.某二叉树的遍历序列为?
    • 12.某线索二叉树的线索数为?
    • 13.有向图顶点的入度与出度的关系为?
    • 14. 由邻接矩阵进行深度优先遍历的结果为?
    • 15.关于图的深度优先搜索描述正确的为?
    • 16.构造无向连通图的最小生成树的算法?
    • 17.拓扑排序适用于哪类图?
    • 18.关于图的遍历算法描述正确的为?
    • 19.邻接矩阵与邻接表的适用情况为?
    • 20.关于哈夫曼树的描述不正确的为?


1.数据结构是指什么?

数据结构 :相互之间存在一种或多种特定关系的数据元素的集合。

  • 换句话说,数据结构是带“结构”的数据元素的集合,
    • “结构”就是指数据元素之间存在的关系。
  • 因此,数据结构是指数据元素的组织形式。

2.某语句时间复杂为?

在这里插入图片描述

算法的时间复杂度 :衡量算法执行时间随输入规模增长的增长率。

  • 它用大O符号(O)来表示,表示最差情况下的运行时间。

对于给定的语句执行频度 ( 3 n + n l o g 2 n + n 2 + 8 ) (3n+nlog_2{n}+n^2+8) (3n+nlog2n+n2+8)我们可以根据增长趋势判断其时间复杂度。

  • 当n趋向无穷大时,其中的线性项 3 n 3n 3n和对数项 n l o g 2 n nlog_2{n} nlog2n都会被抛弃。
  • 而平方项 n 2 n^2 n2会主导增长。

因此,该算法的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

答案【C】


3.关于数据结构的说法那个正确?

在这里插入图片描述


数据结构 :指数据的存储、组织和管理的方式,是为了满足特定的操作需求而设计和实现的。

逻辑结构 :指数据元素之间的关系,主要分为线性结构非线性结构两种。

  • 线性结构包括:线性表、栈、队列等。
  • 非线性结构包括:树、图等。

存储结构 :指数据元素在内存中的存储表示方式,主要分为顺序存储链式存储两种。

  • 顺序存储是将数据元素连续地存储在一块连续的存储空间中,
  • 链式存储是通过指针来连接数据元素。

线性结构 :一种由有限个数据元素组成的结构。

线性结构具有四个基本特征:

  1. 必须存在唯一的一个开始元素。
  2. 必须存在唯一的一个终端元素。
  3. 除开始元素外,其他数据元素均有唯一的前驱元素。
  4. 除终端元素外,其他数据元素均有唯一的后继元素。

非线性结构 :不符合线性结构特征的数据结构。

顺序存储

  • 在计算机存储器中用一片地址连续的存储单元依次存放数据元素。

链式存储

  • 在计算机存储器中用任意地址的存储单元存放数据元素。

  • 数据元素之间的逻辑关系以指针连接的方式实现。


A选项: 数据结构的逻辑结构独立于其存储结构。

解析: 逻辑结构是描述数据元素之间的关系,

而存储结构是描述数据元素在内存中的存储方式,

二者是相对独立的。

B选项: 数据结构的存储结构独立于该数据结构的逻辑结构。

C选项: 数据结构的逻辑结构唯一地决定了该数据结构的存储结构。

解析: 同一逻辑结构采用不同的存储方法,可以得到不同的存储结构,B、C 错误。

D选项: 逻辑结构和存储结构均相同的数据结构一定为同一数据结构。

数据结构包括逻辑结构存储结构运算三个要素。

当逻辑结构和存储结构相同而运算不同时,可能不是同一数据结构。

  • 比如:栈和队列逻辑结构和存储结构可以相同,由于运算的不同,而属于两种不同的数据结构。

答案【A】

4.一个算法的评价标准包括哪些方面?

正确性 :指算法是否能够按照设计的要求正确地解决问题。

可读性 :指算法的代码是否易于理解和维护。

健壮性 :算法是否能够处理异常情况或非法输入。

可扩展性 :指算法是否能够处理更大规模的数据或更复杂的问题。

时间复杂度 :指算法执行所需的时间与输入规模之间的关系。

空间复杂度 :指算法执行所需的内存空间与输入规模之间的关系。

5.时间复杂度指的是什么?

在这里插入图片描述

算法中基本语句重复执行的次数是问题规模 n n n的某个函数 f ( n ) f(n) f(n)

算法的时间量度记作 T ( n ) = O ( f ( n ) ) T(n)=O(f(n)) T(n)=O(f(n))

表示随问题规模n的增大,算法执行时间的增长率和 f ( n ) f(n) f(n)的增长率相同称作算法的时间复杂度
这里所谓的”基本语句“指的是算法中重复执行次数和算法的执行时间成正比的语句,它对算法运行时间的贡献最大。


本题中算法的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

表明该算法中基本语句重复执行的次数即算法的执行时间与 n 2 n^2 n2成正比。

答案【C】

6.算法的重要特征有那些?

在这里插入图片描述

算法的五个重要特性:

有穷性 :指一个算法必须在执行有限个操作步骤后终止。

确定性 :算法中的每一步骤都必须有确切的定义,不能有二义性。

可行性 :算法中的每一步操作都必须是可以通过已经实现的基本运算执行有限次来实现的。

输入 :指一个算法可以有零个或多个输入。

输出 :指一个算法必须有一个或多个输出。

B选项: 可读性是指算法的代码或描述易于理解和阅读。虽然可读性对于编写和维护代码很重要,但它并不是算法的基本特性之一。

C选项: 正确性是指算法能够正确地解决问题,输出预期的结果。虽然正确性是算法的一个重要目标,但它并不是算法的基本特性之一。

D选项: 稳定性通常用于描述算法在处理相同输入时是否产生相同或相似的输出。虽然稳定性在某些算法(如排序算法)中很重要,但它并不是算法的基本特性之一。

答案【A】

7.某语句时间复杂为?

在这里插入图片描述

在计算算法时间复杂度时,可以忽略所有 低次幂项最高次幂的系数,这体现出了增长率的含义。

依据该原则,可以看出上述:

  • 前两个算法的时间复杂度均为 O ( n 3 ) O(n^3) O(n3)
  • 最后一个算法的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

答案【D】

8.存储数据时要存储什么?

在这里插入图片描述

A选项: 数据元素的类型在很多情况下在程序设计阶段就已经明确,不是存储时重点考虑的额外内容。

B选项:数据的基本运算通常是在程序运行时根据算法和逻辑来执行,而不是在存储阶段进行处理。

C选项: 数据元素之间的关系对于数据的组织、查询、修改等操作非常重要。

  • 比如在链表、树、图等数据结构中,明确元素之间的关系才能有效地进行各种数据处理。

D选项: 数据的存取方式更多是在设计存储结构和算法时考虑,而不是直接作为存储的部分。

综上所述 :

存储数据时通常不仅需要存储数据元素的值,还要存储数据元素之间的关系

答案【C】

9.某语句时间复杂为?

在这里插入图片描述

函数中的基本语句为:sum+=++i;

该语句等价于以下两条基本语句:

  • ++i;
  • sum=sumt+i;

w h i l e while while循环的含义为求前 i i i项自然数的和,直到该和不再小于数值 n n n

由于 s u m = 1 + 2 + 3 + . . + i = ( 1 + i ) ∗ i / 2 , sum=1+2+3+..+i=(1+i)*i/2, sum=1+2+3+..+i=(1+i)i/2 s u m < n , sum<n, sum<n ( 1 + i ) ∗ i / 2 < n , i (1+i)*i/2<n,i (1+i)i/2<ni为循环次数,因此时间复杂度为 O ( n 1 / 2 ) O(n^{1/2}) O(n1/2)

答案【B】

10.某语句时间复杂为?

在这里插入图片描述

首先,外层的 f o r for for循环,从 i = 1 i=1 i=1 i < = n , i<=n, i<=n一共执行了 n n n
对于每次外层循环的值,内层的 f o r for for循环从 j = 1 j=1 j=1 j < = 2 ∗ i j<=2*i j<=2i执行的次数是 2 i 2i 2i

  • 当i=1时,内层循环执行2 次。
  • 当i=2时,内层循环执行4次。
  • 当i=3时,内层循环执行6次。
  • 以此类推,当i=n时,内层循环执行2n次。

在这里插入图片描述

答案【A】

11.某二叉树的遍历序列为?

在这里插入图片描述

中序遍历:左->中->右 B D C E A F H G

后序遍历:左->右->中 D E C B H G F A

答案【AC】

12.某线索二叉树的线索数为?

在这里插入图片描述

线索二叉树的概念:

  • 在有n个结点的二叉链表中,有n + 1个空指针域。
    • 因为n个结点的二叉树有2n个指针域(每个结点有两个指针域,分别指向左孩子和右孩子)
    • 而n个结点的二叉树中,除了根结点外,每个结点都有一个指针指向它
    • 所以有n - 1个指针是用来连接结点的,那么空指针域的个数为2n-(n - 1)=n + 1个。
  • 线索二叉树就是利用这些空指针域来存放指向结点在某种遍历次序下的前驱和后继的指针(这些指针称为线索)。

结论:n个结点的线索二叉树上含有的线索数为n + 1

答案【B】

13.有向图顶点的入度与出度的关系为?

在这里插入图片描述

在有向图中,所有顶点的入度之和是所有顶点出度之和的1倍

  • 由于每条弧必然连接两个顶点,也就对应一个入度和一个出度,所以所有顶点的入度之和等于所有顶点的出度之和。

  • 事实上,各顶点入度之和等于弧数,各顶点出度之和也等于弧数,所以两者相等。

答案【B】

14. 由邻接矩阵进行深度优先遍历的结果为?

在这里插入图片描述

在这里插入图片描述

答案【C】

15.关于图的深度优先搜索描述正确的为?

在这里插入图片描述

C选项:

深度优先搜索(DFS)可以使用或者递归实现。(递归实现时,函数调用栈就起到了栈的作用)

  • 当进行深度优先搜索每次深入一个节点,就相当于将该节点压入栈中。
  • 当回溯时,就相当于将栈顶元素弹出。

D选项:

深度优先搜索(DFS)不适合寻找图中的最短路径,广度优先搜索(BFS)才适合寻找图中的最短路径。

  • 因为BFS是按照层进行搜索的,最先找到的路径往往是最短路径(在无权图中)
  • 而DFS是深入搜索,可能会陷入很深的路径,很难保证找到的是最短路径。

答案【C】

16.构造无向连通图的最小生成树的算法?

在这里插入图片描述

Dijkstra算法:

Dijkstra算法主要用于计算一个顶点到其他所有顶点的最短路径。

  • 它从一个起始顶点开始,逐步扩展到图中的其他顶点,记录每个顶点到起始顶点的最短距离。
  • 但是它不是用于构造无向连通图的最小生成树的算法,其重点在于求最短路径而非构建最小生成树。

Prim算法:

Prim算法是专门用于构造无向连通图的最小生成树的算法。

  • 它从图中的任意一个顶点开始,每次选择一个与当前生成树相连且权值最小的边,将对应的顶点加入到生成树中。
  • 不断重复这个过程,直到所有顶点都被加入到生成树中,这样就得到了图的最小生成树。

Floyd算法:

Floyd算法用于求解图中任意两点之间的最短路径。

  • 它通过动态规划的思想,逐步更新任意两点之间的最短路径长度。
  • 其目的是求最短路径矩阵,不是构建最小生成树。

拓扑排序:

拓扑排序是针对有向无环图(DAG)的一种操作。

  • 它将图中的顶点按照一定的顺序排列,使得对于图中的每条有向边(u, v),顶点u在排序结果中都排在顶点v之前。
  • 拓扑排序不适用于无向连通图,更不能用于构造无向连通图的最小生成树。

答案【B】


17.拓扑排序适用于哪类图?

在这里插入图片描述

拓扑排序 :拓扑排序的目的是为图中的顶点提供一种线性排序,使得对于图中的每条有向边(u, v),顶点u在排序中都位于顶点v之前。

  • 如果图中存在环,就无法满足这样的线性排序要求。

A选项: 无向图没有方向的概念,而拓扑排序是基于有向边的概念来定义顶点的先后顺序的,所以拓扑排序不适用于无向图。

B选项: 有向无环图(DAG)符合拓扑排序的适用条件,因为它不存在环,能够进行拓扑排序。

C选项: 连通图只是强调图中任意两个顶点之间存在路径,但没有涉及到有向无环的特性,连通图可能是无向的,也可能是有向且有环的,所以拓扑排序不一定适用于连通图。

D选项: 强连通图是有向图且图中任意两个顶点都互相可达,这意味着存在环,而拓扑排序不适用于有环的图,所以拓扑排序不适用于强连通图。

答案【B】


18.关于图的遍历算法描述正确的为?

在这里插入图片描述

A选项:

深度优先搜索(DFS)可以用于检测图中的环路

  • 在深度优先搜索过程中,如果在搜索到某个顶点v时,发现它的某个邻接顶点u已经被标记为“正在访问”(而不是“已访问”),那么就说明存在环路。
  • 因为这意味着从v可以通过其他路径再次到达u,从而形成了一个环。

B选项:

广度优先搜索(BFS)在无权图中总是能找到从起点到终点的最短路径

  • 在有权图中,BFS不能保证找到从起点到终点的最短路径。
  • 因为BFS是按照层次进行搜索的,它没有考虑边的权重。

C选项:

  • BFS从起始顶点开始,按照距离起始顶点的距离逐层搜索。
  • 在无权图中,每经过一条边就相当于距离增加1。
  • 所以先被搜索到的目标顶点一定是距离起始顶点最短的路径到达的。

D选项:

DFS和BFS都可以用来检测图是否连通

如果从某个顶点开始进行DFS或者BFS:

  • 若能够访问到图中的所有顶点,则图是连通的。
  • 若不能访问到所有顶点,则图是非连通的。

答案【ACD】


19.邻接矩阵与邻接表的适用情况为?

在这里插入图片描述

答案【ABCD】


20.关于哈夫曼树的描述不正确的为?

在这里插入图片描述

A选项:

  • 在构造哈夫曼树的过程中,每次都是选取权值最小的两个结点合并为一个新的结点。
  • 所以树中两个权值最小的结点一定是兄弟结点。

B选项:

  • 哈夫曼树的构造是基于权值的,每次合并都是选择权值较小的结点。
  • 非叶子结点是由下层的结点合并而来,其权值是下层两个结点权值之和。
  • 所以树中任一非叶子结点的权值一定不小于下一层任一结点的权值。

C选项:

  • 哈夫曼树是一棵严格的二叉树,每个非叶子节点都有两个子节点,因此不存在度为1的节点。

A选项:

完全二叉树 :除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。

  • 哈夫曼树的结构取决于叶子节点的权值合并顺序,不一定是完全二叉树。

答案【D】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/496946.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCA降维MATLAB代码解释及应用场景

代码整体功能概述 这段代码主要实现了以下几个功能&#xff1a;首先读取两个 CSV 文件中的数据&#xff0c;对数据进行归一化处理后合并&#xff0c;接着绘制原始数据的散点图进行可视化展示&#xff0c;然后应用主成分分析&#xff08;PCA&#xff09;算法对合并后的数据进行…

JVM学习-内存结构(一)

一、引言 学前了解&#xff1a; 1.什么是JVM 1.1定义 Java Virtual Machine &#xff0c;Java 程序的运行环境&#xff08;Java 二进制字节码的运行环境&#xff09;。 好处 一次编译&#xff0c;处处执行 自动的内存管理&#xff0c;垃圾回收机制 数组下标越界检查 比较…

【C++】统计正整数的位数:题目解析与代码优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述**题目要求&#xff1a;统计正整数的位数** &#x1f4af;我的代码实现**核心逻辑解析** &#x1f4af;老师的代码实现**老师代码逻辑解析** &#x1f4af;我的代码…

QML学习(五) 做出第一个简单的应用程序

今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目&#xff0c;选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型&#xff0c;以及输出的程序时32位还是64位。 4.然后一路下一步生成项目框…

光谱相机与普通相机的区别

一、成像目的 普通相机&#xff1a;主要目的是记录物体的外观形态&#xff0c;生成人眼可见的、直观的二维图像&#xff0c;重点在于还原物体的形状、颜色和纹理等视觉特征&#xff0c;以供人们进行观赏、记录场景或人物等用途。例如&#xff0c;拍摄旅游风景照片、人物肖像等…

PhPMyadmin-cms漏洞复现

一.通过日志文件拿Shell 打开靶场连接数据库 来到sql中输入 show global variables like %general%; set global general_logon; //⽇志保存状态开启&#xff1b; set global general_log_file D:/phpstudy/phpstudy_pro/WWW/123.php //修改日志保存位置 show global varia…

【畅购电商】项目总结

目录 1. 电商项目架构图 1.1 系统架构 1.2 技术架构 2. 介绍电商项目 2.1 后台和前台、后端和前端 2.2 Vue全家桶包含哪些技术&#xff1f; 2.3 什么是Vuex&#xff1f; 2.4 什么是SSR 2.5 电商模式是什么&#xff1f; 2.6 枚举类 2.7 elasticsearch相关 2.8 gatew…

开源的go语言统一配置中心 - nacos + nacos go sdk

配置文件实时更新机制的场景需求 配置文件热更新主要应用于需要在不停机的情况下动态调整系统行为的场景&#xff0c;例如修改服务参数、切换数据源等。其原理在于通过一个中心化的管理平台来存储和分发最新的配置信息。当配置文件发生变化时&#xff0c;该平台会主动或被动地…

Redis--如何保障缓存数据库一致性?(面试高频问题)

如何保障缓存数据库一致性&#xff1f; 数据库和缓存不一致采用什么方案&#xff1f;实现商铺和缓存与数据库双写一致背景点评项目使用了什么策略&#xff1f; 存在什么问题&#xff1f;延迟双删&#xff08;强一致场景&#xff09;分布式锁&#xff08;强一致场景&#xff09;…

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

Spring5.1.3 @Autorwired注解原理重新回顾

直接用一些例子代码说明Autorwired的工作原理&#xff0c;Spring版本为5.1.3 。 一般认为Autorwired是自动注入的&#xff0c;但实际不是&#xff0c;和byName, byType等自动注入没有任何关系。 Ca & Cb & Cc 三个类 Ca public class Ca {public Ca(){System.out.p…

Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件&#xff0c;”多个图片分开生成多个PDF文件“或者“多个图片合并生成一个PDF文件” BiliBili视频链接&#xff1a; Linux shell脚本对常见图片格式批量转换…

Linux应用软件编程-多任务处理(进程)

多任务&#xff1a;让系统具备同时处理多个事件的能力。让系统具备并发性能。方法&#xff1a;进程和线程。这里先讲进程。 进程&#xff08;process&#xff09;&#xff1a;正在执行的程序&#xff0c;执行过程中需要消耗内存和CPU。 进程的创建&#xff1a;操作系统在进程创…

119.【C语言】数据结构之快速排序(调用库函数)

目录 1.C语言快速排序的库函数 1.使用qsort函数前先包含头文件 2.qsort的四个参数 3.qsort函数使用 对int类型的数据排序 运行结果 对char类型的数据排序 运行结果 对浮点型数据排序 运行结果 2.题外话:函数名的本质 1.C语言快速排序的库函数 cplusplus网的介绍 ht…

Element-ui table组件:单元格未溢出,悬浮出现popover提示框

问题视图&#xff1a; 问题定位&#xff1a; 源码中&#xff0c;给开启溢出提示的列单元格都添加了class,并且宽度为实际列宽-1。 若单元格内容宽度100%撑开&#xff0c;则会计算为溢出情况。 处理方法&#xff1a; 单元格内容宽度设置100%-1。

Llama 3 预训练(二)

目录 3. 预训练 3.1 预训练数据 3.1.1 网络数据筛选 PII 和安全过滤 文本提取与清理 去重&#xff08;De-duplication&#xff09; 启发式过滤&#xff08;Heuristic Filtering&#xff09; 基于模型的质量过滤 代码和数学推理数据处理 多语言数据处理 3.1.2 确定数…

打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”

有AI无碍 钟科&#xff1a;被黑暗卡住的开发梦 提起视障群体的就业&#xff0c;绝大部分人可能只能想到盲人按摩。但你知道吗&#xff1f;视障人士也能写代码。 钟科&#xff0c;一个曾经“被黑暗困住”的人&#xff0c;他的世界&#xff0c;因为一场突如其来的疾病&#xff0c…

黑马Java面试教程_P9_JVM虚拟机

系列博客目录 文章目录 系列博客目录前言1. JVM组成1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f;3 41.2 什么是程序计数器&#xff1f;3 4总结 1.3 你能给我详细的介绍Java堆吗? 3 4总结 1.4 什么是虚拟机栈 3 4总结 1.6 能不能解释一下方法区&#xff1f; 3…

修改 ssh 默认访问端口

Linux 最小化安装后默认带有 ssh 服务并正常运行&#xff0c;服务默认端口为“22”。为了确保访问网络的安全&#xff0c;很多用户的网络设备对“22”端口做了限制&#xff0c;这时我们需要修改 ssh 服务默认的端口。 此步骤建议直接在服务器上通过鼠标键盘操作 修改配置文件 …

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化&#xff08;SEO&#xff09;是提高网站可见度和排名的重要手段&#xff0c;尤其对新手来说&#xff0c;掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导&#xff0c;帮助你快速入门并逐步提升网站排名。 首先&#xff0c;了解SEO的…