Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?

文章目录

  • 13003数据结构与算法全书框架
    • 考试题型的分值分布如何?
  • 本次内容概述
  • 绪论
    • 第一节概览
      • 什么是数据、数据元素,数据项,数据项的值?
      • 什么是数据结构?分哪两种集合形式(逻辑和存储)?
        • 逻辑结构有哪4类?每一类涉及哪些操作?
        • 存储结构有哪4类?每一类和逻辑存储有何关联?
    • 类型和数据项的值的关系是什么?什么是数据类型?
      • 基本类型有哪两种?
      • 抽象类型是什么?

13003数据结构与算法全书框架

在这里插入图片描述

之前学习过的内容

一、数组与矩阵

二、线性表

三、广义表

四、数与二叉树

五、图

六、排序与查找

考试题型的分值分布如何?

在这里插入图片描述

本次内容概述

在这里插入图片描述

之前学习过的内容有

二、线性表

顺序表

链表,包括单链表,循环链表,双向链表

绪论

第一节概览

在这里插入图片描述

之前学过的有

顺序存储方法(结构),链式存储方法(结构)

另外两种存储方法没学

  • 原来存储方法,是从存储角度来考虑的数据结构,之前学的确实有欠缺

见,Day11-【软考】稀疏矩阵考试中如何计算?以及线性表的分类有哪些?,中:什么是线性表?线性结构中顺序表和链表

这一天学习的内容,有好多要深化的

什么是数据、数据元素,数据项,数据项的值?

  • 每一名学生的,学号,姓名,各科目成绩;每一本图书的,书名,作者名,出版社名,书号,出版日期,这一条记录,就是一个数据元素

    表中共30个数据元素,因为一共有30个学生,也就是有30行,30个数据元素

    图中,每个椭圆都表示一个数据元素

    • 这个怎么理解,看图知道就行

      要一层层看,特别是下层,每一层的椭圆,确实就是一个个数据元素,并且每一层元素之间,居然构成了树结构,这就是数据元素之间的关系

    这30个数据元素,居然是一种线性结构的数据元素集合,也就是说,学号这一栏的顺序不可改变

  • 学号,姓名;书名,作者名,就是数据项

​ 表中每个数据元素,有5个数据项,分别是学号,姓名,性别,出生日期,籍贯

​ M202210300,王义平,山东,都是数据项的值,学号的值,一定不同,有特殊含义,与学生一一对应,其他的值,可以相同

​ 在数据结构中,数据的最小不可分割的单位是数据项

  • 全部学生的记录;全部图书的记录,构成了数据

    数据元素作为一个完整的对象(整体)是构成数据的基本单位

在这里插入图片描述

在这里插入图片描述

什么是数据结构?分哪两种集合形式(逻辑和存储)?

带有结构特性的数据元素集合构成数据结构。

数据结构又分为逻辑结构和存储结构

也就是说,数据元素集合,有两种集合形式

逻辑结构有哪4类?每一类涉及哪些操作?

从逻辑角度来看,基本的数据结构包括4类,分别是集合、线性结构、图结构和树结构。

1、集合由元素构成,是数学中最基本的概念之一。集合中各元素之间没有次序关系

涉及集合的操作包括:

将新元素加入集合、从集合中删除指定元素

判定某元素是否属于集合等

判定集合是否为空、

求两个集合的并集、求两个集合的交集、求一个集合的补集等

  • 是不是不存在关系

集合的操作可以借用线性结构的操作来完成,一般不单独讨论集合。

当然,如果还有其他的需求,则也可以使用树结构来完成。;原来集合,特殊情况下,也可以使用树结构来操作

2、线性结构是数据元素之间存在着先后次序关系的结构,每个元素都对应着一个唯一的次序,这个次序决定着元素的位置。

表1-1某班30名学生的基本信息,就是一种线性结构

包含“M2022103001”的记录是第一个元素,包含“M2022103030”的记录是第30个元素。

也就是说,头,和尾,是固定的,第一个,和最后一个,是固定的数据元素

排在每个数据元素前面的元素是唯一的,称为直接前驱

同样地,排在每个数据元素后面的元素也是唯一的,称为直接后继

当然,第一个和最后一个元素是例外的,第一个元素没有直接前驱,最后一个元素没有直接后继。

  • 存在关系的元素个数:数据元素之间是一对一的关系

3、图结构是一种网状结构

  • 存在关系的元素个数:多对多关系

4、树结构可以被看作图的特例

图 1-1一本书的目录构成的树,就是一个树结构

  • 存在关系的元素个数:一对多关系;看来特例,就是把多对多,变成一对多关系;

  • 这不就是数据库中的“联系”的联系类型么,看来最好是把一对多,转成多对多关系,才方便存储和计算

树结构和图结构都是比线性结构更复杂的结构,它们属于非线性结构

原来线性结构(集合,线性结构),非线性结构(图结构,树结构),都是只是从逻辑角度,来对数据结构进行的分类

之前的学习,有点不全面,见,Day11-【软考】稀疏矩阵考试中如何计算?以及线性表的分类有哪些?,中:数据结构有哪几种?线性结构和非线性结构

在这里插入图片描述

算法的设计主要基于数据的逻辑结构,关注的是哪些数据元素之间存在相互关系,以及算法中要按照什么样的次序对哪些数据元素进行何种操作。

存储结构有哪4类?每一类和逻辑存储有何关联?

为何还要从存储角度去考虑?

因为具体实现算法时要依赖于相应的存储结构,只有知道了数据元素的存储方式,才能实际访问数据元素和对其进行具体的操作。

数据元素及其关系在计算机内的存储方式,称为数据的存储结构,也称为物理结构

数据结构常用的存储方法有以下4种。

1、顺序存储方法,是和线性结构关联的

逻辑上相邻的数据元素,存储到物理位置相邻的存储单元中,这样的存储方法称为顺序存储方法。

在使用程序设计语言中的一维数组保存线性结构中的数据元素时,采用的就是顺序存储方法。

相应的存储结构称为顺序存储结构。

什么是一维数组?

见,Day11-【软考】数据结构与算法中,如何计算一维数组、二维数组?,中:一、数组与矩阵

2、链式存储方法

逻辑上相邻的数据元素,不要求其存储的物理位置也相邻,通常借助于程序设计语言中的指针指示数据元素间的逻辑关系

这样的存储结构称为链式存储结构。

3、索引存储方法

索引存储方法针对数据元素建立索引表

索引表由索引项组成,索引项指示数据元素所在的物理位置。通过索引项,可以加快查找数据元素的速度。

  • 好像之前学习过这个索引,一时半会又找不到了

4、散列(哈希)存储方法

它根据数据元素的关键字计算出该元素的物理存储位置。

  • 好像之前学习过这个关键字,一时半会又找不到了

    见,Day13-【软考】长文!什么是散列表查找?以及所有的排序算法是怎样的?如何进行堆排序(重点!)?,中:查找数据时,无需查表,根据规则进行计算即可

通常,使用称为散列表的一维数组作为保存元素的结构。

类型和数据项的值的关系是什么?什么是数据类型?

类型值的一个集合

也就是数据项的值,的一个集合

比如,整型就是整数的集合。可以为这些类型定义运算,使用相应的运算符表示对应的操作。

例如,对于整数集合,定义的运算有加法、减法、乘法整除和取模等,由此确定了允许对整数进行的操作。

​ 对于布尔类型(逻辑类型),可以进行的操作包括逻辑与、逻辑或和逻辑非等。

类型加上允许对该类型数据进行的一组操作,称为数据类型

基本类型有哪两种?

所有程序设计语言都会提供基本类型。

  • 若一个类型所表示的值不可再分解,则该类型称为原子类型,

如C语言中的整型、实型等都是原子类型。

  • 与之相对的是结构类型。结构类型的值可以再细分,即它是由若干个分量按某种结构组成的。

例如,C语言中的结构体、数组都是结构类型。

构成结构的分量可以是原子类型的,也可以是结构类型的。

抽象类型是什么?

除了程序设计语言中提供的基本类型以外,还可以定义抽象意义下的类型

并为该类型定义一组相关的操作

这样定义的数据类型称为抽象数据类型(ADT)。

抽象数据类型的定义包括类型的名字及对各个操作的刻画,也就是要明确“做什么”。

对于每个操作,要规定操作的名字、操作执行的前提条件、输入和输出分别是什么等。

每个操作通常表示为一个函数方法

抽象数据类型通常都是程序设计语言中没有提供的类型。

在给出抽象数据类型的定义时,尚未明确所定义类型的数据元素的存储方式,;用顺序,还是链式等等不知道

实现环节,才会给出所定义的类型中涉及的数据元素使用哪种方式保存及如何保存。

有了存储结构,才能具体实现各操作,也就是实现“如何做”。

意思就是,在实现环节,才会进行明确,明确存储结构

再明确函数,或方法

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

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

相关文章

使用 MSYS2 qemu 尝鲜Arm64架构国产Linux系统

近期,我的师弟咨询我关于Arm64架构的国产CPU国产OS开发工具链问题。他们公司因为接手了一个国企的单子,需要在这类环境下开发程序。说实在的我也没有用过这个平台,但是基于常识,推测只要基于C和Qt,应该问题不大。 1. …

unity学习21:Application类与文件存储的位置

目录 1 unity是一个跨平台的引擎 1.1 使用 Application类,去读写文件 1.2 路径特点 1.2.1 相对位置/相对路径: 1.2.2 固定位置/绝对路径: 1.3 测试方法,仍然挂一个C#脚本在gb上 2 游戏数据文件夹路径(只读&…

【Redis】hash 类型的介绍和常用命令

1. 介绍 Redis 中存储的 key-value 本身就是哈希表的结构,存储的 value 也可以是一个哈希表的结构 这里每一个 key 对应的一个 哈希类型用 field-value 来表示 2. 常用命令 命令 介绍 时间复杂度 hset key field value 用于设置哈希表 key 中字段 field 的值为…

基于51单片机和WS2812B彩色灯带的流水灯

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码四、主函数总结 系列文章目录 前言 用彩色灯带按自己想法DIY一条流水灯,谁不喜欢呢? 所用单片机:STC15W204S (也可以用其他1T单片机,例如,S…

力扣017_最小覆盖字串题解----C++

题目描述 我们可以用滑动窗口的思想解决这个问题。在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」现有窗口的 r 指针,和一个用于「收缩」窗口的 l 指针。在任意时刻,只有一个指针运动,而另一个保持静止。我们在 s 上滑动…

如何从客观角度批判性阅读分析博客

此文仅以个人博客为例,大量阅读朋友反馈给我的交流让我得知他们所理解我的博客所表达的意思并非我所想表达的,差异或大或小,因人而异。 观点与事实 只有从客观角度反复批判性阅读和分析,才能逐渐清晰观点和事实。 观点不等于事实…

深入理解MySQL 的 索引

索引是一种用来快速检索数据的一种结构, 索引使用的好不好关系到对应的数据库性能方面, 这篇文章我们就来详细的介绍一下数据库的索引。 1. 页面的大小: B 树索引是一种 Key-Value 结构,通过 Key 可以快速查找到对应的 Value。B 树索引由根页面(Root&am…

Spring Boot项目如何使用MyBatis实现分页查询及其相关原理

写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…

LabVIEW温度修正部件测试系统

LabVIEW温度修正部件测试系统 这个基于LabVIEW的温度修正部件测试系统旨在解决飞行器温度测量及修正电路的测试需求。该系统的意义在于提供一个可靠的测试平台,用于评估温度修正部件在实际飞行器环境中的性能表现,从而确保飞行器的安全性和可靠性。 系统…

动态规划每日一练(四)

一、day1——最长数对链 题目链接&#xff1a; 646. 最长数对链 - 力扣&#xff08;LeetCode&#xff09;646. 最长数对链 - 给你一个由 n 个数对组成的数对数组 pairs &#xff0c;其中 pairs[i] [lefti, righti] 且 lefti < righti 。现在&#xff0c;我们定义一种 跟随…

对比category_encoders库和sklearn库中的OrdinalEncoder

OrdinalEncoder 是用来对数据中的分类特征进行编码、转换为整数标签的函数。 category_encoders库 from category_encoders import OrdinalEncoder 安装&#xff1a;pip install category_encoders --trusted-host pypi.tuna.tsinghua.edu.cn&#xff08;记得关闭代理&#x…

【PLL】杂散生成和调制

时钟生成 --》 数字系统 --》峰值抖动频率生成 --》无线系统 --》 频谱纯度、 周期信号的相位不确定性 随机抖动&#xff08;random jitter, RJ&#xff09;确定性抖动&#xff08;deterministic jitter,DJ&#xff09; 时域频域随机抖动积分相位噪声确定性抖动边带 杂散生成和…

理解神经网络:Brain.js 背后的核心思想

温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

Ubuntu下的DoxygenVScode实现C/C接口文档自动生成 Chapter1 Ubuntu下的DoxygenVScode实现C/C接口文档自动生成1、 Doxygen简介1. 安装Doxygen1&#xff09;方法一&#xff1a;2&#xff09;方法二&#xff1a;2. doxygen注释自动生成插件3. doxygen注释基本语法4. doxygen的生成…

Java内存模型 volatile 线程安全

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 认识JMM认识volatile关键字&#xff1a;可见性和顺序性理解线程安全的概念 目录 Java内存模型可见性例子和volatilevolatile如何保证可见性原子性与单例模式…

【Proteus仿真】【51单片机】多功能计算器系统设计

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、LCD1602液晶显示 2、矩阵按键​ 3、加减乘除&#xff0c;开方运算 4、带符号运算 5、最大 999*999 二、使用步骤 基于51单片机多功能计算器 包含&#xff1a;程序&…

three.js+WebGL踩坑经验合集(4.1):THREE.Line2的射线检测问题(注意本篇说的是Line2,同样也不是阈值方面的问题)

上篇大家消化得如何了&#xff1f; 笔者说过&#xff0c;1级编号不同的两篇博文相对独立&#xff0c;所以这里笔者还是先给出完整代码&#xff0c;哪怕跟&#xff08;3&#xff09;没有太大区别。 这里我们把线的粗细调成5&#xff08;排除难选中的因素&#xff09;&#xff…

SAP内向交货单详解

【SAP系统研究】 #SAP #交货单 #内向交货单 一、内向交货单的概念 内向交货单,Inbound Delivery,是SAP系统中用于管理外部供应商或内部工厂向公司发货的文档。它记录了货物从供应商到公司仓库或生产地点的运输和接收过程。 内向交货单的主要功能有: (1)货物接收:用于…

扩展无限可能:Obsidian Web Viewer插件解析

随着 Obsidian 1.8.3 正式版的发布&#xff0c;备受期待的官方核心插件——Web Viewer 也终于上线。本文将从插件启用、设置以及应用场景三个方面详细介绍如何使用这一新功能&#xff0c;和大家一起更好地利用 Obsidian 进行内容管理和知识整理。 插件启用 Web Viewer作为官方…

如何在 ACP 中建模复合罐

概括 本篇博文介绍了 ANSYS Composite PrepPost (ACP) 缠绕向导。此工具允许仅使用几个条目自动定义高压罐中常见的悬垂复合结构。 ACP 绕线向导 将必要的信息输入到绕组向导中。重要的是要注意“参考半径”&#xff0c;它代表圆柱截面的半径&#xff0c;以及“轴向”&#x…