当前位置: 首页 > news >正文

[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(课后习题+答案解析)

1. 简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

  • 数据
    • 数据是客观事物的符号表示,是所有能输人到计算机中并被计算机程序处理的符号的总称。数据是信息的载体,能够被计算机识别、存储和加工
  • 数据元素
    • 是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
  • 数据项
    • 是组成数据元素的、有独立含义的、不可分割的最小单位。
  • 数据对象
    • 是性质相同的数据元素的集合,是数据的一个子集。
  • 数据结构
    • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是带“结构”的数据元素的集合,“结构”是指数据元素之间存在的关系。
  • 逻辑结构
    • 数据元素之间的逻辑关系,数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的,是从具体问题抽象出来的数学模型
  • 存储结构
    • 数据元素及其关系在计算机内存中的表示(又称映像、存储方式),数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。存储结构既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系
  • 抽象数据类型
    • 抽象数据类型是指一个数学模型以及定义在此数学模型上得一组操作的总称,不考虑计算机内的具体存储结构和运算的具体实现算法

2. 试举一个数据结构的例子,叙述其逻辑结构和存储结构两个层次的含义及相互关系。

  • 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。
  • 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。
  • 即相同的逻辑结构,可以对应不同的存储结构。

3. 简述逻辑结构的四种基本关系并画出它们的关系图。

  • 集合结构:数据元素之间除了“属于同一个集合”的关系外,别无其他关系
  • 线性结构:数据元素之间存在一对一的关系
  • 树结构:数据元素之间存在一对多的关系
  • 图结构或网状结构:数据元素之间存在多对多的关系
  • 在这里插入图片描述

4. 存储结构由哪两种基本的存储方法实现?

  1. 顺序存储结构
    • 顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述
    • 顺序存储结构要求所有的元素依次存放在一片连续的存储空间中
  2. 链式存储结构
    • 用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系使用指针来表示
    • 链式存储结构通常借助于程序设计语言的指针类型来描述

5. 选择题

  • (1)在数据结构中,从逻辑上可以把数据结构分成()。
    • A.动态结构和静态结构
    • B.紧凑结构和非紧凑结构
    • C.线性结构和非线性结构
    • D.内部结构和外部结构
    • 答案:C
    • 解析:
      • 在数据结构中,从逻辑上可以把数据结构分成线性结构和非线性结构
      • 图、树、集合等结构为非线性结构
  • (2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()
    • A.存储结构
    • B.存储实现
    • C.逻辑结构
    • D.运算实现
    • 答案:C
    • 解析:
      • 逻辑结构表示的是数据元素之间的逻辑关系,数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的,是从具体问题抽象出来的数学模型
      • 运算实现与数据元素的形式、内容和个数有关,数据元素形式、内容和个数不同运算实现可能有所不同
      • 存储结构和存储实现是数据元素在计算机内存中的表示和实现,与数据元素本身的形式、内容、相对位置、个数相关
  • (3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着().
    • A. 数据具有同一特点
    • B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
    • C.每个数据元素都一样
    • D.数据元素所包含的数据项的个数要相等
    • 答案:C
    • 解析
      • 同一逻辑结构中的所有数据元素具有相同的特性,每个数据元素的数据项的个数相同且类型一致。数据元素数据项的内容可不同
  • (4)以下说法正确的是()。
    • A.数据元素是数据的最小单位
    • B.数据项是数据的基本单位
    • C.数据结构是带有结构的各数据项的集合
    • D.一些表面上很不相同的数据可以有相同的逻辑结构
    • 答案:D
    • 解析:
      • 数据项是组成数据元素的、有独立含义的、不可分割的最小单位。
      • 数据的基本单位是数据元素
      • 数据结构为数据元素及数据元素之间关系的集合
  • (5)算法的时间复杂度取决于()。
    • A.问题的规模
    • B.待处理数据的初态
    • C.计算机的配置
    • D.A和 B
    • 答案:D
    • 解析:
      • 算法的时间复杂度取决于问题的规模和待处理数据的初态,问题的规模越大时间复杂度越大,数据的初态不同算法所需的时间不同
  • (6)以下数据结构中,()是非线性数据结构。
    • A.树
    • B.字符串
    • C.队列
    • D.栈
    • 答案:A
    • 解析:
      • 字符串、队列、栈均为线性表中的一种,树结构为非线性结构

6. 试分析下列各个算法的时间复杂度

  • 在这里插入图片描述
    • 在这里插入图片描述
  • 在这里插入图片描述
    • 在这里插入图片描述
  • 在这里插入图片描述
    • 在这里插入图片描述
  • 在这里插入图片描述
    • 在这里插入图片描述
  • 在这里插入图片描述
    • 在这里插入图片描述
  • 在这里插入图片描述
    • 在这里插入图片描述

相关文章:

[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(课后习题+答案解析)

1. 简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 数据 数据是客观事物的符号表示,是所有能输人到计算机中并被计算机程序处理的符号的总称。数据是信息的载体,能够被计算机识别、存储和加工 数据元素…...

JS_countup.js 的简单使用,数字滚动效果

countup.js countup.js 是一个轻量级,无依赖的JavaScript类,通过简单的设置就可以达到数字滚动的效果 官网:https://inorganik.github.io/countUp.js/ 源码 var CountUpfunction(target,startVal,endVal,decimals,duration,options){var …...

【C++知识点】STL 容器总结

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…...

C++---背包模型---装箱问题(每日一道算法2023.3.9)

注意事项: 本题是"动态规划—01背包"的扩展题,dp和优化思路不多赘述。 题目: 有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数)。 要求 n 个物品中,任取若…...

if-else if与switch的练习1:输入两个数,输出两个数的加减乘除的值

1.if-else if的练习 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice…...

【教程】你现在还不知道微软的New Bing?你out了,快点进来看

哈喽啊&#xff0c;大家好&#xff0c;好久不见&#xff0c;我是木易巷&#xff01; 不禁感叹&#xff0c;AI人工智能时代真的已经来临&#xff01; 目前&#xff0c;谷歌和微软就各自面向大众的产品发布了重大公告。谷歌推出了一款名为Bard实验性对话式 AI 服务&#xff0c;而…...

https流程

ssl加密协议包含以下4个步骤 1、服务器去第三方机构注册生成证书&#xff0c;第三方机构非对称加密生成公钥私钥&#xff0c;给服务器一个私钥&#xff0c;证书包含了公钥。 2、客户端向服务器索要证书 3、客户端向第三方机构验证证书 4、客户端对称加密生成密钥&#xff0c;在…...

python魔法方法

Python中的魔法方法&#xff08;也称为特殊方法或双下划线方法&#xff09;是在类定义中使用的一些特殊的函数,可以使用dir方法查询。它们以双下划线开头和结尾&#xff0c;例如__init__和__str__。这些方法被Python解释器用于执行特定的操作&#xff0c;例如实例化对象、字符串…...

软件测试员如何进行产品测试?

一般来讲&#xff0c;当软件成为一个成功的产品后&#xff0c;产品测试工作就会复杂很多。比如拥有的用户量大&#xff0c;迭代频繁&#xff0c;测试的周期短&#xff0c;重复性强。面对紧张复杂的产品测试工作&#xff0c;软件测试员应怎样完成这一系列的测试工作呢&#xff1…...

计算机网络基础知识点【1】

文章目录计算机网络第一章 计算机网络参考模型1.计算机网络为什么需要分层&#xff1f;1.1 分层思想1.2 分层好处2.OSI七层模型2.1 OSI七层模型总结2.2 OSI七层工作原理2.3 数据封装与解封装2.4 计算机网络常用协议3.TCP/IP参考模型3.1 什么是TCP/IP协议3.2 TCP/IP协议族的组成…...

c++ 中标准库类型 string 详解

&#x1f441;‍&#x1f5e8;&#x1f441;‍&#x1f5e8; 前言 标准库类型string 表示可变长的字符序列&#xff0c;使用string 类型必须首先包含string 头文件。string 定义在命名空间std 中。 定义和初始化 string 对象 首先说明如何初始化对象是由类本身决定的&#xff0…...

Html新增属性之拖拽(drag)

元素在拖放过程中触发的事件 HTML5中&#xff0c;只要将元素的 draggable 属性设置为 true 就可以实现拖放功能&#xff0c;在拖放过程中&#xff0c;触发了多个事件&#xff0c;如下&#xff1a; dragstart:事件主体是被拖放元素&#xff0c;在开始拖放被拖放元素时触发。dra…...

C/C++开发,无可避免的多线程(篇二).thread与其支持库

一、原子类型与原子操作 1.1 原子类型与操作介绍 在前一篇博文中&#xff0c;多线程交互示例代码中&#xff0c;给出了一个原子类型定义&#xff1a; // 原子数据类型 atomic_llong total {0}; 那么什么事原子数据类型呢&#xff0c;和c的基础数据类型有什么不同呢&#xff1a…...

mysql数据库之表级锁

表级锁&#xff0c;每次操作锁住整张表。锁定粒度大&#xff0c;发生所冲突的概率最高&#xff0c;并发度最低。应用在myisam、innodb、bdb等存储引擎中。 一、表级锁分类。 1、表锁 2、元数据锁&#xff08;meta data lock&#xff0c;MDL&#xff09; 3、意向锁 二、表锁…...

Python - Pandas - 数据分析(2)

Pandas数据分析2前言常用的21种统计方法describe()&#xff1a;numeric_only&#xff1a;偏度skewness&#xff1a;功能&#xff1a;含义&#xff1a;计算公式&#xff1a;演示&#xff1a;峰度值&#xff1a;用途&#xff1a;数值&#xff1a;计算公式&#xff1a;演示&#x…...

我的十年编程路 2019年篇

随着2018年&#xff0c;三星天津研究院的裁撤&#xff0c;我选择了到广州的三星研究院工作&#xff0c;与最心爱的她开始一起生活。 这一年的开始&#xff0c;我注册了博客园。和2014年类似&#xff0c;在刚注册不久&#xff0c;我写了一篇题为《全新开始&#xff0c;全心出发…...

(蓝桥真题)剪格子(搜索+剪枝)

样例1输入&#xff1a; 3 3 10 1 52 20 30 1 1 2 3 样例1输出&#xff1a; 3 样例2输入&#xff1a; 4 3 1 1 1 1 1 30 80 2 1 1 1 100 样例2输出&#xff1a; 10 分析&#xff1a;这道题目我们直接从(1,1)点开始进行dfs搜索即可&#xff0c;但是需要注意一点的是我们搜…...

Kalman Filter in SLAM (3) ——Extended Kalman Filter (EKF, 扩展卡尔曼滤波)

文章目录1. 线性系统的 Kalman Filter 回顾2. Extended Kalman Filter 之 DR_CAN讲解笔记2.1. 非线性系统2.2. 非线性系统线性化2.2.1. 状态方程f(xk)f(x_k)f(xk​)在上一次的最优估计状态x^k−1\hat{x}_{k-1}x^k−1​处线性化2.2.2. 观测方程h(xk)h(x_k)h(xk​)在这一次的预测…...

关于vertical-align的几问

vertical-align属性可以给我讲解一下吗&#xff1f; 当使用table-cell布局或inline元素时&#xff0c;可以使用CSS的vertical-align属性控制元素的垂直对齐方式。该属性可应用于元素本身以及其父元素&#xff08;例如&#xff0c;td、th、tr和table&#xff09;。 以下是vertic…...

【拜占庭将军问题】这一计谋,可以让诸葛丞相兴复汉室

我们都知道&#xff0c;诸葛亮第一次北伐是最可能成功的&#xff0c;魏国没有防备&#xff0c;还策反了陇西&#xff0c;陇西有大量的马匹可以装备蜀国骑兵&#xff0c;可惜街亭一丢&#xff0c;那边就守不住了 当时我不在&#xff0c;只能作诗一首~ 如果穿越过去&#xff0c;…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题&#xff0c;其核心在于如何在有限容量的背包中选择物品&#xff0c;使得总价值最大化。根据物品选择规则的不同&#xff0c;主要分为两类&#xff1a; 01 背包&#xff1a;每件物品最多选 1 次&#xff08;选或不选&#…...