数据结构 - 概述及其术语

news/2024/9/28 14:43:26/

经过上一章节《数据结构与算法之间有何关系?》的阐述,相信大家对数据结构多少有了点了解,今天我们将进入数据结构的正式学习中。

在计算机科学中,数据结构是一种数据管理、组织和存储的格式。它是相互之间存在一种或多种特定关系的数据元素的集合。

在计算机中一个静态数据是没有灵魂的,只有实际使用起来才有意义,而对于一个数据使用必然会面临三个问题:怎么存储,用什么承载,怎么处理。而这不正好和存储、组织、管理所对应吗。这也正是数据结构所研究关注的三要素。

01、三要素

1、物理(存储)结构

怎么存储是指数据最终怎么存储在计算机磁盘上的,这也是我们经常说的物理结构也叫存储结构。

就如同我们收纳内务一样,可能有的人收纳的整整齐齐,按照一定顺序整理,有的人收纳的这一块那一块,感觉毫无章法。而我们也可以根据数据在内存中是否为连续地址存储分为顺序存储和非顺序存储,常见的顺序存储有顺序存储结构,非顺序存储有链式存储结构、索引存储结构和散列存储结构。

2、逻辑结构

用什么承载是指数据从计算机磁盘上取出后,要放哪呢或者说用什么工具把它送给后续的应用使用呢。而这个承载体在我们高级语言就是一个类,一个数据对象,其根源就是我们现在说的数据结构,而此时我们关注的是这个类或这个数据对象数据是怎么组织的,是一对一、一对多、多对多亦或其他关系,而这种关系是纯粹的数据之间的关系无关数据实际存储情况就是逻辑上的一种关系,因此称为逻辑结构。

同样的逻辑结构也有顺序之分,可以分为线性结构与非线性结构。线性结构有数组、链表、栈、队列等,非线性结构有树结构、图结构等。

3、数据运算

怎么处理指当数据已经从计算机磁盘上取出后,怎么加工使用,也就是数据运算,我们可以根据实际业务需求对数据进行各种加工处理,最得到我们想要的结果,这是处理就是我们常说的增删改查排序等操作。

如果说物理(存储)结构是数据结构的家,逻辑结构就是数据结构的骨架,那么数据运算就是数据结构的灵魂,使得数据可以真正产生价值。

02、术语

1、数据

数据是信息的载体,是所有可以录入到计算机中并且可以被识别处理的数字、字符、符合等合集。包括但不限于整数、小数、字母、符号、图片、音频、视频等。

2、数据项

数据项是数据的最小单位,比如我们在设计学生实体的时候定义学号、姓名、年龄等都是数据项。

3、数据元素

我们实际使用中经常会把多个数据项组合在一起,作为一个整体进行统一处理,这样的组合就形成了数据的基本单位数据元素。

比如学生表中每一行数据就是一个数据元素。

4、数据对象

数据对象是指有特定属性和操作的数据的集合。数据对象由多个数据元素组成,数据元素是数据对象的实例。

5、抽象数据类型

抽象数据类型是一个定义,它是抽象了数据的特性及行为并做了相关定义,但是没有具体实现。

比如说栈作为一个抽象数据类型,定义如“入栈、出栈”等操作,但是具体底层是使用数组实现还是链表实现,使用者并不关心。

后面我们继续将对:数组、链表、跳表、栈、队列、树、堆、散列、图九类数据结构进行深入学习,感兴趣的可以持续关注。

:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。https://gitee.com/hugogoos/Planner


http://www.ppmy.cn/news/1531227.html

相关文章

Ubuntu下安装向日葵:闪退

下载 https://sunlogin.oray.com/download 初次安装 $ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 正在选中未选择的软件包 sunloginclient。 (正在读取数据库 ... 系统当前共安装有 234281 个文件和目录。) 准备解压 SunloginClient_15.2.0.63064_amd64.deb ..…

自动驾驶综述 | 定位、感知、规划常见算法汇总

1. 引言 自动驾驶技术是当代科技领域的前沿之一,它综合了多个学科的知识,如计算机视觉、深度学习、传感器融合、控制理论等。在自动驾驶系统中,定位、感知和规划是实现自动驾驶的核心部分。本文将从这三个方面汇总自动驾驶中常见的算法&…

Spring系统学习(五)——Spring数据库编程

Spring 数据库编程概述 在Spring中,数据库编程的核心模块是Spring JDBC和事务管理。Spring提供了简化数据库操作的工具和接口,例如JdbcTemplate,大大减少了与JDBC API相关的繁琐代码。接下来,我们详细介绍Spring JDBC及其事务管理…

Unity3D入门(二) :Unity3D实现视角的丝滑过渡切换

1. 前言 上篇文章,我们已经初步了解了Unity3D,并新建并运行起来了一个项目,使相机视角自动围绕着立方体旋转。 这篇文章,我们来讲一下Unity3D怎么过渡地切换视角。 我们继续是我上篇文章中的项目,但是需要向把Camera…

JAIN SLEE 和 Spring Boot对比

在性能方面,JAIN SLEE 和 Spring Boot 各有优势,取决于使用场景。为了更好地比较两者的性能,以下从几个关键方面进行分析: 1. 设计目标与适用场景 JAIN SLEE:专门为电信级应用设计,擅长处理高并发、低延迟…

代码随想录打卡Day39

今天是打家劫舍专题,三道题全都看了讲解,第一次做感觉确实是无从下手。。。不过了解了原理之后代码很快就写出来了。 198.打家劫舍 这道题使用一维dp数组,首先确定dp数组的含义,dp[i]为考虑偷下标[0, i]家的情况下所能获得的最大…

QT 如何判断电脑已安装某个软件

如何判断Windows电脑是否已经安装了某个软件&#xff1f;一般而言&#xff0c;通过安装包形式安装的软件&#xff0c;都会把卸载信息写入到注册表&#xff0c;本文正是通过读取注册表的方式来判断是否已安装了该款软件&#xff0c;详见下面代码&#xff1a; #include <QCor…

【Vue】以RuoYi框架前端为例,ElementUI封装图片上传组件——将图片信息转成base64后提交到后端保存

RuoYi 框架本身对于图片上传功能&#xff0c;在ElementUI的 <el-upload> 组件的基础装封装了 /components/ImageUpload/index.vue 组件。本组件就是在 RuoYi 自定义的 <ImageUpload> 组件的基础上进行改造&#xff0c;将图片的信息在上传之前处理成 base64 格式&am…