数据结构练习题1:基本概念

news2024/11/23 5:05:06

练习题1:基本概念

    • 1 抽象数据类型概念分析
    • 2. 逻辑结构与存储结构概念分析
    • 3.综合选择题
    • 4.综合判断题
    • 5.时间复杂度相关习题

1 抽象数据类型概念分析

1.可以用(抽象数据类型)定义一个完整的数据结构。

分析:
1)抽象数据类型(ADT)描述了数据的逻辑结构和抽象运算,通常用数据对象、数据关系和基本操作集这样的三元组来表示,从而构成一个完整的数据结构定义。

2)抽象数据类型的两个重要特征:数据抽象和数据封装。
①数据抽象:用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口。(即外界使用它的方法)
②数据封装:将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。

抽象数据类型的理解

2. 逻辑结构与存储结构概念分析

1.数据的逻辑结构独立于其存储结构。
分析:数据的逻辑结构从实际问题出发,只采用抽象表达方式,独立于存储结构,数据的存储方式有多种选择。而数据的存储结构是逻辑结构在计算机上的映射,它不能独立于逻辑结构而存在。

2.数据结构的三要素:逻辑结构、存储结构和运算。

问题:逻辑结构的存储方式有多种选择什么意思?
是指既能顺序存储又能链式存储。

3.下面属于逻辑结构的是
A 顺序表 B 哈希表 C 有序表 D 单链表

4.以下与数据的存储结构有关的术语是
A.有序表 B.线性表 C.有向图 D.顺序表

5.以下与数据的存储结构无关的术语是
A 循环队列 B 链表 C 哈希表 D 栈

注释:3-5选择题答案附后

有序表、线性表、有向图既能顺序存储,又能链式存储,是逻辑结构。
顺序表、循环队列、顺序栈为顺序存储。

属于逻辑结构 = 与存储结构无关 = 既能顺序存储又能链式存储
与存储结构有关 = 只能顺序存储或只能链式存储


栈逻辑结构对应的顺序存储结构为顺序栈,对应的链式存储结构为链栈。

队列的顺序存储结构是循环队列,链式存储结构是链队列,又叫做单链表。

线性表逻辑结构对应的顺序存储结构为顺序表,对应的链式存储结构为链表。

特殊案例:
有序表是指关键字有序的线性表,仅描述元素之间的逻辑关系,既可以顺序存储(使用数组)也可以链式存储(使用指针),不受存储结构制约,由于有序受到逻辑制约,属于逻辑结构。
哈希表,是个大数组,顺序存储。

问题1:如何区分数据结构和数据类型?

数据类型的运算主要是算数运算、逻辑运算等。
而数据结构运算主要是对数据的增删改查等。
数据类型和数据结构的区别

问题2:抽象数据类型有哪些?
栈、队列、树、图、集合、映射。

问题3:哈希表是散列存储,为什么做题时不考虑这种存储方式?

6.存储数据时存储的是数据元素的值和数据元素之间的关系。

7.链式存储设计时,各个不同结点存储空间可以不连续,但结点内的存储单元地址必须连续。

结点内什么意思? 是value值域与next域结合,称这个结点为内部。

typedef struct LNode {

int value; // value中存放结点值域,默认是int型

struct Lnode *next;//指向后继结点的指针

}LNode; // 定义单链表结点类型

上述定义了一个结构体,包括两部分,一是值域,二是指针域;每当定义一个结点都会产生这两个区域。如下图:

valuenext

这个value与next域必须是挨着的,称这个结点为内部。
结点内部一定是连续的。若第一个结点占用两个地址,那么value域的起始地址是1,则指针域的地址就是2。同理若第二个结点的value地址是10,则next域就是11。

参考:链式存储设计时,链表结点内的存储单元地址是如何分布的

3.综合选择题

1.下列叙述中正确的是
A)算法的效率只与问题的规模有关,而与数据的存储结构无关
B)算法的时间复杂度是指执行算法所需要的计算工作量
C)数据的逻辑结构与存储结构是一一对应的
D)算法的时间复杂度与空间复杂度一定相关

2.算法的有穷性是指
A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的
C)算法程序的长度是有限的 D)算法只能被有限的用户使用

3.下列叙述中正确的是
A)一个逻辑数据结构只能有一种存储结构
B)数据的逻辑结构属于线性结构,存储结构属于非线性结构
C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

4.算法的空间复杂度是指
A)算法程序的长度 B)算法程序中的指令条数
C)执行算法程序所占的存储空间 D)算法执行过程中所需要的存储空间

5.在下列选项中,哪个不是一个算法一般应该具有的基本特征
A、确定性 B、可行性 C、无穷性 D、拥有足够的情报

6.被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数i元素之间的这种关系称为
A 规则 B 结构 C 集合 D 运算

7.设有如下遗产继承规则:丈夫和妻子可以互相继承遗产,子女可以继承父亲和母亲的遗产,子女间不能相互继承,则表示该遗产继承关系最合适的数据结构应该是
A 树 B 图 C 线性表 D 集合

8.下面关于抽象数据类型的描述错误的是
A.数据封装 B.用例驱动
C.信息隐藏 D.使用与实现分离

9.数据结构中,与所使用的计算机无关的是数据的
A 存储结构 B 物理结构 C 逻辑结构 D 物理和存储结构

10.下列关于算法的时间复杂度陈述正确的是
A 算法的时间复杂度是指执行算法程序所需要的时间
B 算法的时间复杂度是指算法程序的长度
C 算法的时间复杂度是指算法执行过程中所需要的基本运算次数
D 算法的时间复杂度是指算法程序中的指令条数

注释:1-10选择题答案附后

4.综合判断题

1…在数据元素内数据项之间也有关系,在讨论数据的逻辑结构时应考虑。 × 逻辑结构看的是数据元素之间的关系

2.同一个算法,实现语言级别越高,算法执行的效率越低。√ 级别越高,需要额外执行的条件就越多,效率也就越低。

3.集合中任何两个数据元素之间都没有逻辑关系,而且组织形式松散。√ 除同属于一个集合外,没有其他任何关系。

5.时间复杂度相关习题

O(1)<O(log2n)<O(n)<O(nlog2n)<O( n 2 n^2 n2)<O( n 3 n^3 n3)<O( 2 n 2^n 2n)<O(n!)<O( n n n^n nn)

1.下面时间复杂度较小的是 A
在这里插入图片描述
2.以下程序段中语句"m++;"的语句频度为 C

int m=0,i,j;
for(i=1;i<=n;i++)
for(j=1;j<=2*ij++)
  m++;

A n B n+1 C n(n+1) D n 2 n^2 n2
2+4+6+…+2n = n(n+1)

3.下列函数的时间复杂度是() 。

int func(int n){
int i=0,sum=O;
while(sum<n)  sum+=++i;
return i;
}

设语句频度为f(n)

1+2+3+…+f(n)<n

(1+f(n))f(n)/2<n

解得时间复杂度为O(n^(1/2) )

a=i++,这个运算的意思是先把i的值赋予a,然后在执行i=i+1;
a=++i,这个的意思是先执行i=i+1,然后在把i的值赋予a;

4.下面说法错误的是 D
A 某算法的时间复杂度为O( n 2 n^2 n2),表明该算法的执行时间与 n 2 n^2 n2成正比
B 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O( n 2 n^2 n2)算法
C 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
D 算法原地工作的含义是指不需要任何额外的辅助空间

时间复杂度:一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长,即它是最坏情况下估算算法执行时间的一个上界。

算法的时间复杂度只与规模相关吗?

算法的时间复杂度不仅与问题的规模相关,还与输入实例中的初始状态有关。但在最坏的情况下,其时间复杂度就是只与求解问题的规模相关的。我们在讨论时间复杂度时,一般就是以最坏情况下的时间复
杂度为准的。

算法原地工作是指算法所需的辅助空间是常量。
5.下面算法将一维数组a中的n个数逆序存放到原数组中,空间复杂度为()。

for(i=0;i<n/2;i++){
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t}

该算法仅需要借助一个变量t,与问题规模n的大小无关,所以其空间复杂度为O(1)

很值得看的理解:
时间复杂度和空间复杂度计算
时间复杂度分析(含王道绪论习题)

6.以下关系式中,错误的是 D在这里插入图片描述
A f(n) =O(g(n))
B g(n) = O(f(n))
C h(n) = O( n 2 n^2 n2)
D h(n) = O(nlog2n)

已知f(n)=O(g(n)),则必能推出g(n)=O(f(n))

7.在这里插入图片描述
A.O(1) B.O(n) C.O( n − 1 n^{-1} n1) D.O( n 2 n^2 n2)
答案选B n趋与无穷,f(n)/n为常数

8.设n是描述问题规模的非负整数,下列程序段的时间复杂度是 B

x=0;
while(n>=(x+1)*(x+1))
x=x+1;

A.O(logn) B.O( n 1 / 2 n^1/2 n1/2) C.O(n) D.O( n 2 n^2 n2)

9.下列程序段的时间复杂度是

int sum = 0;
for(int i=1;i<n;i*=2)
   for (int j=0;j<i;j++)
   sum++;

A.O(logn) B.O(n) C.O(nlogn) D.O( n 2 n^2 n2)
i = 1,2,4,8,…, 2 k − 1 2^{k-1} 2k1 2 k − 1 2^{k-1} 2k1<n)
T = 1+2+4+8+…+ 2 k − 1 2^{k-1} 2k1= 2 k 2^k 2k-1
n<T<2n,时间复杂度为O(n)

逻辑结构与存储结构:3-5 CDD
综合选择题:1-5 BADCC 6-10 BBBCC

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Leetcode -617.合并二叉树 -1022.从根到叶的二进制数之和】

Leetcode Leetcode -617.合并二叉树Leetcode -1022.从根到叶的二进制数之和 Leetcode -617.合并二叉树 题目&#xff1a;给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#x…

ESP32-IDF VS Code进行开发

ESP32-C3 入门篇&#xff08;二&#xff09;使用VS Code进行开发 文章目录 前言 总结STM32的成功&#xff0c;除了Cortex M3的性能强之外&#xff0c;也离不开ST推出的标准库及简单易用的MDK IDE。完善的开发配套&#xff0c;极大的降低了开发门槛&#xff0c;让开发者更专注…

python:使用Scikit-image对遥感影像做空间滤波(中值,高斯,Sobel,Laplace,Scharr等)

作者:CSDN @ _养乐多_ 本文将介绍使用Scikit-image中的滤波函数对遥感影像做空间滤波的代码。滤波方法包括:中值滤波器,高斯滤波器,Sobel滤波器,Laplace滤波器,Scharr滤波器等。并将原始影像和结果影像绘制成图。 结果如下图所示, 文章目录 一、空间滤波函数详解二、…

RocketMQ发送消息

一.消费模式 MQ的消费模式可以大致分为两种&#xff0c;一种是 推Push&#xff0c;一种是 拉Pull。 Push 是 服务端 (MQ) 主动推送消息给客户端&#xff0c;优点是及时性较好&#xff0c;但如果客户端没有做好流控&#xff0c;一旦服务端推送大量消息到客户端时&#xff0c;…

分布式光伏电站智能管理系统

随着能源需求的增加&#xff0c;各种各样的光伏电站工程建设出现不同形式的技术缺陷。设计了分布式光伏电站区域智能系统&#xff0c;实现 了各个园区用电数据的集中管理。对光伏电站分布式运营管理进行了研究&#xff0c;采用集中运营管理中心的方法&#xff0c;建立了区域分布…

蓝牙L2CAP协议简介及报文格式

概述 逻辑链路控制和适配协议&#xff08;Logical Link Control and Adaptation Protocol&#xff0c;L2CAP&#xff09;是蓝牙的核心协议&#xff0c;负责适配基带中的上层协议。它同链路管理器并行工作&#xff0c;向上层协议提供定向连接的和无连接的数据业务。L2CAP具有分…

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像写入相机内存(C++)

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像写入相机内存&#xff08;C&#xff09; Baumer工业相机Baumer工业相机BGAPISDK和相机内存的技术背景Baumer工业相机通过BGAPISDK将相机图像写入相机内存功能1.引用合适的类文件2.通过BGAPISDK将相机图像写入相机内存功能…

Cortext-M3系统:异常(3)

1、异常 异常响应系统是再M3内核水平上的&#xff0c;支持众多的系统异常和外部中断。1-15为系统异常&#xff0c;大于16为外部中断。除了个别异常的优先级被定死外&#xff0c;其它异常的优先级都是可编程的。优先级数值越小&#xff0c;优先级越高。CM3支持中断嵌套&#xff…

网络嗅探与ARP欺骗

目录 一、网络嗅探概述 1.1 网络嗅探的概念 1.1.2 一把双刃剑 1.1.3 特点 1.2 网络嗅探的原理 1.2.1 网络嗅探的条件 1.2.2 网卡的工作模式 1.2.3 局域网的传输技术 1.3 网络嗅探的前提 1.3.1 网卡设置为混杂模式 1.3.2 同处在一个广播式局域网内 1.4 嗅探工具的使…

4.23 TCP状态转换 4.24半关闭、端口复用

4.23 TCP状态转换 2MSL(Maximum Segment Lifetime) 主动断开连接的一方&#xff0c;最后进入一个TIME_WAIT状态&#xff0c;这个状态会持续&#xff1a;2msl msl&#xff1a;官方建议&#xff1a;2分钟&#xff0c;实际是30s 当 TCP 连接主动关闭方接收到被动关闭方发送的 FIN…

【kubernetes】部署kube-apiserver与kubectl

前言:二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用kubernetes集…

Flutter 组件集录 | RawMagnifier 组件 - 拿起你的八倍镜

theme: cyanosis 1. 前言 今天看 Flutter 源码&#xff0c;偶然发现 Magnifier 组件&#xff0c;这单词不就是 放大镜 嘛! 再结合新版 Flutter 中输入文本的放大镜效果&#xff0c;直觉告诉我这玩意应该可以放大任何组件。如下所示&#xff0c;背景是一张图片&#xff0c;使用 …

0013-TIPS-pawnyable : Race-Condition

原文 Linux Kernel PWN | 040204 Pawnyable之竞态条件 Holstein v4: Race Condition 题目下载 漏洞代码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/uaccess.h> #i…

使用 Vite + Vue3 + Element-Plus + Pinia + Ts 搭建 Vue3 项目

使用 Vite Vue3 Element-Plus Pinia Ts 搭建 Vue3 项目 使用Vite搭建配置Router配置 Element-Plus配置sass配置Pinia配置解析 符号&#xff0c;并找到对应的路径TypeScript忽略类型检查 使用Vite搭建 Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模…

chatgpt赋能python:Python指定小数点位数的完整指南

Python指定小数点位数的完整指南 Python是一种高级编程语言&#xff0c;广泛用于科学、统计和数学计算。在许多情况下&#xff0c;我们需要对浮点数进行更精确的计算。Python 中保留小数位数的能力很强&#xff0c;本文将向您介绍如何在 Python 中指定小数点后的位数。 为什么…

购买服务器/安装宝塔

1、服务器的选择 本人知道并了解一丢丢的就这四个平台&#xff1a; 1、阿里云 2、腾讯云 3、硅云 4、亚马逊 个人觉得阿里云是YYDS&#xff0c;啥都挺方便的&#xff0c;唯一不足就是有点小贵&#xff0c;但是新用户第一次购买还是很优惠的。 腾讯云有的云服务器是真的便宜&am…

【Batch_size 与 梯度 之间的关系】

chatGPT 回答 梯度更新与批大小&#xff08;batch size&#xff09;之间有密切的关系。批大小是指在训练过程中一次迭代所使用的样本数量。 在深度学习中&#xff0c;梯度下降是一种常用的优化算法&#xff0c;用于更新模型参数以最小化损失函数。梯度是损失函数对于模型参数…

Gradio Flagging模块解析与实践

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

基于html+css的图展示135

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

大数据大作业(课程设计)

题目&#xff1a;信息爬取字数统计及可视化 内容及要求&#xff1a; 配置Hadoop平台&#xff1b;利用爬虫技术爬取任一门户网站新闻栏目一定时间段内的新闻信息&#xff0c;保存为一个或多个文件并上传到Hadoop平台以本人学号命名的文件夹下&#xff1b;利用MapReduce框架编程完…