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

第一章-数据结构绪论

第一章-数据结构绪论

数据结构的起源和相关概念

  • 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

  • 程序设计的实质是选择一个好的结构,再设计一种好的算法。

  • 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。也就是说,数据其实就是符号,这些符号必须具体两个前提:

    1. 可以输入到计算机中
    2. 能被计算机程序识别
  • 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。比如人、牛、马、鸡等等。

  • 数据项:一个数据元素可以由若干个数据项组成,比如人可以由手、脚、鼻子等数据项,数据项是数据不可分割的最小单位。
  • 数据对象:是性质相同的数据元素的集合,是数据的子集。

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

逻辑结构和物理结构

  • 按照视点的不同,我们把数据结构分为物理结构和逻辑结构。

  • 逻辑结构:数据对象中数据元素之间的相互关系。分为下面四种。

    1. 集合结构:结合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。如下图

    2. 线性结构:线性结构中的数据元素之间是一对一的关系,如下图:

    在这里插入图片描述

    1. 树形结构:数据元素之间存在一种一对多的层次关系。如下图:

在这里插入图片描述

  1. 图形结构:图形结构的数据元素是多对多的关系。如下图所示:

在这里插入图片描述

  • 物理结构(存储结构):数据的逻辑结构在计算机中的存储形式。数据元素的存储结构形式有两种,分别是顺序存储和链式存储。

    1. 顺序存储:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。

    在这里插入图片描述

    1. 链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

    在这里插入图片描述

抽象数据类型

  • 数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总成。数据类型又可以分为两类:

    1. 原子类型:是不可再分解的基本类型,包括整型、实型、字符型等。
    2. 结构类型:由若干个类型组合而成,是可以再分解的。例如整形数组是由整型组成。
  • 抽象是指抽取出事物具有的普遍性的本质。抽象是一种思考问题的方法,他隐藏了繁琐的细节,只保留实现目标所必须的信息。

  • 抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。

  • 抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。下面是对抽象数据类型的标准格式:

在这里插入图片描述

相关文章:

第一章-数据结构绪论

第一章-数据结构绪论 数据结构的起源和相关概念 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 程序设计的实质是选择一个好的结构,再设计一种好的算法。 数据:是描述客观事物的符…...

20、stm32使用FMC驱动SDRAM(IS42S32800G-6BLI)

本文将使用安富莱的STM32H743XIH板子驱动SDRAM 引脚连接情况 一、CubeMx配置工程 1、开启调试口 2、开启外部高速时钟 配置时钟树 3、开启串口1 4、配置MPU 按照安富莱的例程配置: /* ********************************************************************…...

git仓库大文件导致仓库体积增大处理

一、删除大文件 git filter-branch --tree-filter rm -rf path/to/large/file --prune-empty HEAD二、提交到远程 git push -f origin main PS:-f必须参数,强制刷新PS:git设计是为了存储代码,一般不将大文件上传到仓库...

将游戏坐标转化成屏幕鼠标坐标

将游戏坐标转化成屏幕鼠标坐标 思路说明:转化其实是取得两点的相对位置,例如将游戏人物移动到另外一个位置(游戏人物初始位置坐标到目的位置坐标),鼠标需要移动到屏幕的某个位置。算出游戏的移动距离,游戏…...

springboot中Instant时间传参及序列化

在部分场景中,后台的时间属性用的不是Date或Long,而是Instant,Java8引入的一个精度极高的时间类型,可以精确到纳秒,但实际使用的时候不需要这么高的精确度,通常到毫秒就可以了。 而在前后端传参的时候需要…...

nacos安装与启动相关问题(启动闪退和显示此站点的连接不安全)

问题:启动闪退 尝试: 使用记事本打开cmd文件,在文件结尾处新增两行 pause endlocal 如果还有问题:ERROR Nacos failed to start, please see D:\dev\nacos\logs\nacos.log for more details 尝试: 在nacos的bin目…...

51单片机学习--DS18B20温度读取温度报警器

需要先编写OneWire模块,再在DS18B20模块中调用OneWire模块的函数 先根据原理图做好端口的声明: sbit OneWire_DQ P3^7;接下来像之前一样把时序结构用代码模拟出来: unsigned char OneWire_Init(void) {unsigned char i;unsigned char Ac…...

PYTHON专栏

PYTHON专栏 python基础教程 python基础教程 Python练手算法 Python练手算法 Python设计模式 Python设计模式 MySQL教程 MySQL教程 ORM框架SQLAlchemy Python ORM框架SQLAlchemy Python Web框架Django Python Web框架Django Web框架FastAPI Web框架FastAPI http库request…...

从初学者到专家:Java运算符的完整指南

目录 1.算数运算符 2.增量运算符 2.1自增/自减运算符 4. 逻辑运算符 5.位运算符 6.移位运算符 7. 条件运算符 导言: Java作为一门广泛使用的编程语言,其运算符是编写代码时必不可少的一部分。本篇博客将为你详细介绍Java中的各种运算符&#xf…...

Linux:shell脚本:基础使用(3)

for循环语句 语句格式 for for变量 in 取值列表(可以是变量或者自己定义) do 循环内容 done 工作方式就是通过取值列表去判断循环的次数,每次循环的同时把列表一行的值赋予到for变量。取值方式如果是数字,那就通过数字去…...

opencv基础46-图像金字塔02-拉普拉斯金字塔

前面我们介绍了高斯金字塔,高斯金字塔是通过对一幅图像一系列的向下采样所产生的。有时,我们希望通过对金字塔中的小图像进行向上采样以获取完整的大尺寸高分辨率图像,这时就需要用到拉普拉斯金字塔 前面我们已经介绍过,一幅图像在…...

到 2030 年API 攻击预计将激增近 1000%

导读云原生应用程序编程接口管理公司 Kong 联合外部经济学家的最新研究预计,截至 2030 年 API 攻击将激增 996%,意味着与 API 相关的网络威胁的频率和强度都显着升级。 这项研究由 Kong 分析师和布朗大学副教授 Christopher Whaley 博士合作进行&#x…...

环形队列+DMA空闲中断+接收串口数据

环形队列DMA空闲中断接收串口数据 一.序言二.实验原理三.实战是检验真理的唯一标准3.1 usart1.c3.2 串口中断 三.队列代码4.1 fifo.c4.2 fifo.h 五.结语 一.序言 本次实验利用环形队列DMA空闲中断串口。。通过这个实验可以非常深入的理解队列,DMA,串口的知识。如果…...

LeetCode 31题:下一个排列

目录 题目 思路 代码 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序…...

CMake:检测python模块和包

CMake:检测python模块和包 导言项目结构CMakeLists.txt相关源码 导言 上一篇,我们基本了解了如何去检测python的解释器和python库。通常,代码是依赖于特定的python模块,无论是python工具、嵌入python的程序,还是扩展python的库。…...

02Mysql之多表查询--例题讲解

一、题目详情,以及表的建立 新增员工表emp和部门表deptcreate table dept (dept1 int ,dept_name varchar(11));create table emp (sid int ,name varchar(11),age int,worktime_start date,incoming int,dept2 int);insert into dept values(101,财务),(102,销售)…...

虹科方案 | 汽车总线协议转换解决方案

汽车总线: 汽车总线是一种用于在车辆电子系统中传输数据和控制信息的通信系统。它允许不同的电子控制单元(ECU)在车辆中相互通信,协调各个系统的操作,以实现功能的集成和协同工作。 在现代汽车中,综合通信…...

Mr. Cappuccino的第59杯咖啡——简单手写SpringIOC框架

简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 p…...

爬虫 学习HTML标签和元素的基本概念,了解网页的结构和内容

HTML&#xff08;Hypertext Markup Language&#xff09;是一种用于创建网页的标记语言&#xff0c;由一系列的标签组成。标签使用尖括号&#xff08;< 和 >&#xff09;包围&#xff0c;并且通常成对出现&#xff0c;一个是开始标签&#xff0c;一个是结束标签。 HTML文…...

mysql将id重新修改为递增

文章目录 场景解决,排序的话可以先按照一定大小改一下,然后将id字段删掉,再重新生成即可清空表数据,并将自增id改为1开始 场景 好比我有个配置表: CREATE TABLE config (id int NOT NULL AUTO_INCREMENT,config_key varchar(20) NOT NULL,config_value varchar(500) NOT NU…...

FPGA调试效率翻倍:把VIO IP核当成你的交互式‘信号开关’与‘仪表盘’

FPGA调试效率革命&#xff1a;用VIO构建硬件工程师的交互式仪表盘 在FPGA开发的世界里&#xff0c;调试环节往往占据项目周期的60%以上时间。传统调试方式如同在黑暗房间摸索开关&#xff0c;每次修改测试激励都需要经历漫长的综合-实现-下载循环。而VIO&#xff08;Virtual In…...

量子神经网络辐射场(QNeRF)技术解析与应用

1. 量子神经网络辐射场(QNeRF)技术解析量子计算与计算机视觉的交叉领域正在催生一系列创新性技术。作为这一领域的最新突破&#xff0c;量子神经网络辐射场(QNeRF)将传统神经辐射场(NeRF)的3D场景表示能力与量子计算的独特优势相结合&#xff0c;开创了3D重建和视角合成的新范式…...

避开Unity PS5开发第一个大坑:手把手教你搞定Build-In管线环境与打包(基于2021.3.32f1)

避开Unity PS5开发第一个大坑&#xff1a;手把手教你搞定Build-In管线环境与打包&#xff08;基于2021.3.32f1&#xff09; 当你第一次尝试将Unity项目部署到PS5平台时&#xff0c;可能会遇到各种意想不到的障碍。从版本选择到SDK匹配&#xff0c;再到最终的打包流程&#xff0…...

**TiDB 在高并发场景下的性能优化实战:从慢查询到极致吞吐的跃迁之路**在当前分布式数据库广泛应用的

TiDB 在高并发场景下的性能优化实战&#xff1a;从慢查询到极致吞吐的跃迁之路 在当前分布式数据库广泛应用的背景下&#xff0c;TiDB 作为一款开源的 HTAP&#xff08;混合事务/分析处理&#xff09;数据库&#xff0c;凭借其强一致性、水平扩展能力和与 MySQL 协议的高度兼容…...

【202511】Cosmos-Predict2.5-02-模型篇:用于PhysicalAI的基于视频基础模型的世界模拟【网络架构:DiT】【视觉Tokenizer:WAN2.1 VAE】【16fps】

《World Simulation with Video Foundation Models for Physical AI》 Method 3. 方法 In this section, we first discuss our flow-matching formulation and then present the network architecture. 在本节中,我们首先讨论我们的 flow-matching 表述,然后介绍网络架构。…...

Go语言的安全编程实践

Go语言的安全编程实践 安全编程是现代软件开发的重要组成部分&#xff0c;它涉及到保护应用程序免受各种安全威胁的影响。本文将深入探讨Go语言的安全编程实践&#xff0c;帮助开发者构建更加安全、可靠的应用程序。 1. 安全编程的基本概念 1.1 什么是安全编程 安全编程是一种编…...

告别依赖混乱!在Ubuntu 22.04上为不同项目安装多个.NET版本(SDK 8.0/7.0/6.0)的保姆级指南

多版本.NET开发实战&#xff1a;Ubuntu 22.04下的SDK并行管理艺术 在跨版本.NET项目并行的开发场景中&#xff0c;开发者常陷入"依赖地狱"——A项目需要.NET 6.0的特定功能&#xff0c;B项目依赖7.0的新API&#xff0c;而团队协作又要求本地环境与CI/CD管道保持版本一…...

兔抗ATR抗体亲和纯化,支持轻链专用二抗消除背景干扰

本文系统介绍由艾美捷Bethyl Laboratories推出的靶向人ATR蛋白的兔源多克隆抗体&#xff08;货号A300-137A&#xff09;的核心技术参数、标准化操作流程及功能应用要点&#xff0c;适用于DNA损伤应答、复制胁迫响应及细胞周期检查点调控等研究领域。 一、产品基本特性 该抗体为…...

避坑指南:DESeq2分析中你最容易忽略的5个细节(从样本信息表设计到结果解读)

避坑指南&#xff1a;DESeq2分析中你最容易忽略的5个细节&#xff08;从样本信息表设计到结果解读&#xff09; 当你第一次看到DESeq2输出的差异基因列表时&#xff0c;是否曾对某些结果产生过怀疑&#xff1f;或许你按照教程一步步操作&#xff0c;却发现结果与预期不符。这不…...

Stable Diffusion WebUI 本地部署与创作:从零到出图

文章目录 Stable Diffusion WebUI 本地部署与创作:从零到出图 一、为什么选 Stable Diffusion 二、环境搭建 2.1 硬件 2.2 安装 2.3 GPU 加速 三、第一次出图 3.1 WebUI 界面分区 3.2 Prompt 3.3 参数推荐 四、模型与 LoRA 4.1 Checkpoint 模型 4.2 LoRA 五、ControlNet 精准控…...