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

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)。

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

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

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

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

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

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

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

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

再明确函数,或方法

相关文章:

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

文章目录 13003数据结构与算法全书框架考试题型的分值分布如何? 本次内容概述绪论第一节概览什么是数据、数据元素,数据项,数据项的值?什么是数据结构?分哪两种集合形式(逻辑和存储)&#xff1f…...

富文本 tinyMCE Vue2 组件使用简易教程

参考官方教程 TinyMCE Vue.js integration technical reference Vue2 项目需要使用 tinyMCE Vue2 组件(tinymce/tinymce-vue)的第 3 版 安装组件 npm install --save "tinymce/tinymce-vue^3" 编写组件调用 <template><Editorref"editor"v-m…...

强化学习在自动驾驶中的实现与挑战

强化学习在自动驾驶中的实现与挑战 自动驾驶技术作为当今人工智能领域的前沿之一,正通过各种方式改变我们的出行方式。而强化学习(Reinforcement Learning, RL),作为机器学习的一大分支,在自动驾驶的实现中扮演了至关重要的角色。它通过模仿人类驾驶员的决策过程,为车辆…...

记录 | MaxKB创建本地AI智能问答系统

目录 前言一、重建MaxKBStep1 复制路径Step2 删除MaxKBStep3 创建数据存储文件夹Step4 重建 二、创建知识库Step1 新建知识库Step2 下载测试所用的txtStep3 上传本地文档Step4 选择模型补充智谱的API Key如何获取 Step5 查看是否成功 三、创建应用Step1 新建应用Step2 配置AI助…...

特种作业操作之低压电工考试真题

1.下面&#xff08; &#xff09;属于顺磁性材料。 A. 铜 B. 水 C. 空气 答案&#xff1a;C 2.事故照明一般采用&#xff08; &#xff09;。 A. 日光灯 B. 白炽灯 C. 压汞灯 答案&#xff1a;B 3.人体同时接触带电设备或线路中的两相导体时&#xff0c;电流从一相通过人体流…...

[免费]基于Python的Django博客系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的基于Python的Django博客系统&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的Django博客系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随着互联网技术的飞速发展&#xff0c;信息的传播与…...

Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程

一、问题描述 在使用 Maven 管理项目依赖时&#xff0c;遇到了一个棘手的问题。具体表现为&#xff1a;在 pom.xml 文件中导入了所需的依赖&#xff0c;并且在 IDE 中导入语句没有显示为红色&#xff08;表示 IDE 没有提示依赖缺失&#xff09;&#xff0c;但是在实际使用这些依…...

我们需要有哪些知识体系,知识体系里面要有什么哪些内容?

01、管理知识体系的学习知识体系 主要内容&#xff1a; 1、知识管理框架的外部借鉴、和自身知识体系的搭建&#xff1b; 2、学习能力、思维逻辑能力等的塑造&#xff1b; 3、知识管理工具的使用&#xff1b; 4、学习资料的导入和查找资料的渠道&#xff1b; 5、深层关键的…...

什么是vue.js组件开发,我们需要做哪些准备工作?

Vue.js 是一个非常流行的前端框架,用于构建用户界面。组件开发是 Vue.js 的核心概念之一,通过将界面拆分为独立的组件,可以提高代码的可维护性和复用性。以下是一个详细的 Vue.js 组件开发指南,包括基础概念、开发流程和代码示例。 一、Vue.js 组件开发基础 1. 组件的基本…...

网络工程师 (3)指令系统基础

一、寻址方式 &#xff08;一&#xff09;指令寻址 顺序寻址&#xff1a;通过程序计数器&#xff08;PC&#xff09;加1&#xff0c;自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。 跳跃寻址&#xff1a;通过转移类指令直接或间接给出下一条指令的地址。跳…...

第4章 神经网络【1】——损失函数

4.1.从数据中学习 实际的神经网络中&#xff0c;参数的数量成千上万&#xff0c;因此&#xff0c;需要由数据自动决定权重参数的值。 4.1.1.数据驱动 数据是机器学习的核心。 我们的目标是要提取出特征量&#xff0c;特征量指的是从输入数据/图像中提取出的本质的数 …...

【Python】第五弹---深入理解函数:从基础到进阶的全面解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、函数 1.1、函数是什么 1.2、语法格式 1.3、函数参数 1.4、函数返回值 1.5、变量作用域 1.6、函数…...

【MQ】如何保证消息队列的高性能?

零拷贝 Kafka 使用到了 mmap 和 sendfile 的方式来实现零拷贝。分别对应 Java 的 MappedByteBuffer 和 FileChannel.transferTo 顺序写磁盘 Kafka 采用顺序写文件的方式来提高磁盘写入性能。顺序写文件&#xff0c;基本减少了磁盘寻道和旋转的次数完成一次磁盘 IO&#xff0…...

RAG是否被取代(缓存增强生成-CAG)吗?

引言&#xff1a; 本文深入研究一种名为缓存增强生成&#xff08;CAG&#xff09;的新技术如何工作并减少/消除检索增强生成&#xff08;RAG&#xff09;弱点和瓶颈。 LLMs 可以根据输入给他的信息给出对应的输出&#xff0c;但是这样的工作方式很快就不能满足应用的需要: 因…...

用C++编写一个2048的小游戏

以下是一个简单的2048游戏的实现。这个实现使用了控制台输入和输出&#xff0c;适合在终端或命令行环境中运行。 2048游戏的实现 1.游戏逻辑 2048游戏的核心逻辑包括&#xff1a; • 初始化一个4x4的网格。 • 随机生成2或4。 • 处理玩家的移动操作&#xff08;上、下、左、…...

为何SAP S4系统中要设置MRP区域?MD04中可否同时显示工厂级、库存地点级的数据?

【SAP系统PP模块研究】 一、物料主数据的MRP区域设置 SAP ECC系统中想要指定不影响MRP运算的库存地点,是针对库存地点设置MRP标识,路径为:SPRO->生产->物料需求计划->计划->定义每一个工厂的存储地点MRP,如下图所示: 另外,在给物料主数据MMSC扩充库存地点时…...

Windows10官方系统下载与安装保姆级教程【U盘-官方ISO直装】

Windows 10 官方系统安装/重装 制作启动盘的U盘微软官网下载Win10安装包创建启动盘U盘 安装Win10 本文采用U盘安装Windows10官方系统。 制作启动盘的U盘 微软官网下载Win10安装包 微软官网下载Win10安装包链接&#xff1a;https://www.microsoft.com/zh-cn/software-downloa…...

第05章 07 切片图等值线代码一则

绘制脑部切面图的阈值等值线是一个常见的任务&#xff0c;通常涉及使用VTK&#xff08;Visualization Toolkit&#xff09;库来处理医学图像数据。以下是一个基于VTK/C的示例代码&#xff0c;展示如何读取脑部DICOM图像数据&#xff0c;应用阈值过滤器来提取特定组织的等值线&a…...

【深度学习】线性回归的简洁实现

线性回归的简洁实现 在过去的几年里&#xff0c;出于对深度学习强烈的兴趣&#xff0c;许多公司、学者和业余爱好者开发了各种成熟的开源框架。 这些框架可以自动化基于梯度的学习算法中重复性的工作。 目前&#xff0c;我们只会运用&#xff1a; &#xff08;1&#xff09;通…...

渗透测试技法之口令安全

一、口令安全威胁 口令泄露途径 代码与文件存储不当&#xff1a;在软件开发和系统维护过程中&#xff0c;开发者可能会将口令以明文形式存储在代码文件、配置文件或注释中。例如&#xff0c;在开源代码托管平台 GitHub 上&#xff0c;一些开发者由于疏忽&#xff0c;将包含数据…...

【R语言】数学运算

一、基础运算 R语言中能实现加、减、乘、除、求模、取整、取绝对值、指数、对数等运算。 x <- 2 y <- 10 # 求模 y %% x # 整除 y %/% x # 取绝对值 abs(-x) # 指数运算 y ^x y^1/x #对数运算 log(x) #log()函数默认情况下以 e 为底 双等号“”的作用等同于identical(…...

小游戏源码开发搭建技术栈和服务器配置流程

近些年各种场景小游戏开发搭建版本层出不穷,山东布谷科技拥有多年海内外小游戏源码开发经验&#xff0c;现为从事小游戏源码开发或游戏运营的朋友们详细介绍小游戏开发及服务器配置流程。 一、可以对接到app的小游戏是如何开发的 1、小游戏源码开发的需求分析&#xff1a; 明…...

深度学习|表示学习|卷积神经网络|输出维度公式|15

如是我闻&#xff1a; 在卷积和池化操作中&#xff0c;计算输出维度的公式是关键&#xff0c;它们分别可以帮助我们计算卷积操作和池化操作后的输出大小。下面分别总结公式&#xff0c;并结合解释它们的意义&#xff1a; 1. 卷积操作的输出维度公式 当我们对输入图像进行卷积时…...

cpp智能指针

普通指针的不足 new和new[]的内存需要用delete和deletel]释放。 程序员的主观失误&#xff0c;忘了或漏了释放。 程序员也不确定何时释放。 普通指针的释放 类内的指针&#xff0c;在析构函数中释放。 C内置数据类型&#xff0c;如何释放? new出来的类&#xff0c;本身如…...

【面试题】 Java 三年工作经验(2025)

问题列表 为什么选择 spring boot 框架&#xff0c;它与 Spring 有什么区别&#xff1f;spring mvc 的执行流程是什么&#xff1f;如何实现 spring 的 IOC 过程&#xff0c;会用到什么技术&#xff1f;spring boot 的自动化配置的原理是什么&#xff1f;如何理解 spring boot 中…...

MOS的体二极管能通多大电流

第一个问题&#xff1a;MOS导通之后电流方向可以使任意的&#xff0c;既可以从D到S&#xff0c;也可以从S到D。 第二个问题&#xff1a;MOS里面的体二极管电流可以达到几百安培&#xff0c;这也就解释了MOS选型的时候很少考虑体二极管的最大电流&#xff0c;而是考虑DS之间电流…...

Node.js下载安装及环境配置教程 (详细版)

Node.js&#xff1a;是一个基于 Chrome V8 引擎的 JavaScript 运行时&#xff0c;用于构建可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型&#xff0c;使其非常适合构建实时应用程序。 Node.js 提供了一种轻量、高效、可扩展的方式来构建网络应用程序&#xff0…...

嵌入式MCU面试笔记2

目录 串口通信 概论 原理 配置 HAL库代码 1. 初始化函数 2. 数据发送和接收函数 3. 中断和DMA函数 4. 中断服务函数 串口通信 概论 我们知道&#xff0c;通信桥接了两个设备之间的交流。一个经典的例子就是使用串口通信交换上位机和单片机之间的数据。 比较常见的串…...

代码随想录算法【Day34】

Day34 62.不同路径 思路 第一种&#xff1a;深搜 -> 超时 第二种&#xff1a;动态规划 第三种&#xff1a;数论 动态规划代码如下&#xff1a; class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n,…...

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印P126、P131勘误

勘误&#xff1a;打圈的地方有指数二字。 指数滤波器本身是错误的概念&#xff0c;我在书上打了一个叉&#xff0c;排版人员误删了。 滤波器部分从根本上有问题&#xff0c;本来要改&#xff0c;但是时间不够了。 和廖老师讨论多次后&#xff0c;决定大动。指数滤波器的概念…...