数据结构 - 基本概念和术语

基础概念之间的关系大致如下:
在这里插入图片描述

一、数据、数据元素、数据项和数据对象

数据 > 数据对象 > 数据元素 > 数据项
类比数据库,这四个概念代表的含义如下所示:

  • 数据:整个数据库的所有数据
  • 数据对象:这个数据库的一张表,比如学籍表
  • 数据元素:学籍表里的一条记录
  • 数据项:学籍表里的一个字段值

1、数据(Data)

  • 概念:能输入计算机,且能被计算机处理的各种符号的集合
  • 包括:数值型数据(整数、实数等)、非数值型数据(文字、图像、图形、声音等)

2、数据元素(Data Element)

  • 概念:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理
  • 也简称为元素、或称为记录、结点或顶点
  • 数据元素可以由若干个数据项组成

如下图所示,每一行学生的信息,即为一条记录,也就是一个数据元素。
在这里插入图片描述

3、数据项(Data Item)

  • 构成数据元素的不可分割的最小单位(在数据库中,一个字段值就是一个数据项,一条记录就是一个数据元素)
    在这里插入图片描述

4、数据对象(Data Object)

  • 性质相同的数据元素的集合,是数据的一个子集

二、数据结构(Data Structure)

1、概念:

  • 数据元素不是孤立存在的,它们之间存在着某种关系,数据元素相互之间的关系称为结构

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

  • 或者说,数据结构是带结构的数据元素的集合

2、包含以下三方面的内容:

  • 数据元素之间的逻辑关系,也称为逻辑结构
  • 数据元素及其关系在计算机内存中的表示,称为数据的物理结构或数据的存储结构
  • 数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现

(一)逻辑结构

1、划分方法一:

  • 线性结构:线性表、栈、队列、串
  • 非线性结构:树、图

2、划分方法二:

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

(二)存储结构

四种基本的存储结构:

  • 顺序存储
  • 链式存储
  • 索引存储
  • 散列存储

1、顺序存储结构

在这里插入图片描述

2、链式存储结构

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

3、索引存储结构

  • 在存储节点信息的同时,还建立附加的索引表
  • 例如:手机中的通讯录点开,是一个目录。可以根据首字母寻找对应的人物姓名,这就是索引表。而每个人名点进去之后,可以看到具体的联系人信息,这就是节点信息。

4、散列存储结构

在这里插入图片描述

三、数据类型和抽象数据类型

(一)数据类型(Data Type)

1、定义:数据类型是一组性质相同的值的集合,以及定义于这个值集合上的一组操作的总称。
数据类型=值的集合+值集合上的一组操作

(二)抽象数据类型(Abstract Data Type,ADT)

1、定义:是指一个数学模型,以及定义在此数学模型上的一组操作
在这里插入图片描述
2、抽象数据类型的表示与实现:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之并查集

并查集 1. 并查集原理2. 并查集实现3. 并查集应用3.1 省份数量3.2 等式方程的可满足性 4. 并查集的优缺点及时间复杂度 1. 并查集原理 并查表原理是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集的思想是用一个数组表示了整片森林&#xff0…

opencv进阶08-K 均值聚类cv2.kmeans()介绍及示例

K均值聚类是一种常用的无监督学习算法,用于将一组数据点分成不同的簇(clusters),以便数据点在同一簇内更相似,而不同簇之间差异较大。K均值聚类的目标是通过最小化数据点与所属簇中心之间的距离来形成簇。 当我们要预测…

[国产MCU]-W801开发实例-GPIO输入与中断

GPIO输入与中断 文章目录 GPIO输入与中断1、硬件准备2、软件准备3、驱动实现4、驱动测试W801的GPIO支持软件配置中断,中断触发方式包含:上升沿触发、下降沿触发、高电平触发、低电平触发。本文在前面[ 国产MCU]-W801开发实例-按键与GPIO输入的基础上实现GPIO中断配置。 1、硬…

【Linux网络】网络编程套接字 -- 基于socket实现一个简单UDP网络程序

认识端口号网络字节序处理字节序函数 htonl、htons、ntohl、ntohs socketsocket编程接口sockaddr结构结尾实现UDP程序的socket接口使用解析socket处理 IP 地址的函数初始化sockaddr_inbindrecvfromsendto 实现一个简单的UDP网络程序封装服务器相关代码封装客户端相关代码实验结…

跟着NC学作图 | 使用python绘制折线图

写在前面 今天分享一篇使用Python绘制折线图的教程,在我们前提的教程中,关于使用R语言绘制折线图的教程也很少,跟着PC学作图 | 小提琴图Tufte箱形图折线图的绘制教程也只有相关一部分。 Python自己也是一直在学习,那么也就顺带分…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)九:自定义组件封装下

一、本章内容 续上一张,本章实现一些自定义组件的封装,包括文件上传组件封装、级联选择组件封装、富文本组件封装等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 基于VUE3+Layui从头搭建通用后台管

Azure VM上意外禁用NIC如何还原恢复

创建一个windows虚拟机,并远程连接管理员的方式打开powershell 首先查看虚拟网卡,netsh interface show interface 然后禁用虚拟网卡 ,netsh interface set interface Ethernet disable 去Azure虚拟机控制台,打开串行控制台 控制台中键入cmd,…

飞天使-jenkins进行远程linux机器修改某个文件的思路

文章目录 jenkins配置的方式jenkins中执行shell的思路 jenkins配置的方式 jenkins中执行shell的思路 下面的脚本别照抄,只是一个思路 ipall"$ips"# 将文本参数按行输出为变量 while IFS read -r line; doecho "$line" if [[ ! -z $line ]] &…

Redis数据结构之String

String 类型是 Redis 的最基本的数据类型,一个 key 对应一个 value,可以理解成与Memcached一模一样的类型。 String 类型是二进制安全的,意思是 Redis 的 String 可以包含任何数据,比如图片或者序列化的对象,一个 Redi…

使用 Apache Kafka 和 Go 将数据引入 OpenSearch

需要编写自定义集成层来满足数据管道中的特定要求?了解如何使用 Go 通过 Kafka 和 OpenSearch 实现此目的。 可扩展的数据摄取是OpenSearch等大规模分布式搜索和分析引擎的一个关键方面。构建实时数据摄取管道的方法之一是使用Apache Kafka。它是一个开源事件流平台…

常用消息中间件介绍

RocketMQ 阿里开源,阿里参照kafka设计的,Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现,非常重量级,更适…

ubuntu上使用osg3.2+osgearth2.9

一、介绍 在ubuntu上使用osgearth加载三维数字地球,首先要有osg和osgearth的库,这些可以直接使用apt-get下载安装,但是版本有些老,如果需要新版本的就需要自己编译。 #查看现有版本 sudo apt-cache madison openscenegraph #安装…

Vim在Mac电脑中的下载与安装方法:MacVim

本文介绍在Mac系统电脑中,下载、安装文本编辑器Vim软件(MacVim软件)的具体方法。 在Mac系统电脑中,原本就带有一个非图形界面的Vim;只要我们在终端中,输入如下的代码,就可以查看系统自带的非图形…

探索Perfetto:开源性能追踪工具的未来之光

探索Perfetto:开源性能追踪工具的未来之光 1. 引言 A. 介绍Perfetto的背景和作用 随着移动应用、桌面软件和嵌入式系统的不断发展,软件性能优化变得愈发重要。在这个背景下,Perfetto作为一款开源性能追踪工具,日益引起了开发者…

VR全景加盟项目如何开展?如何共赢VR时代红利?

VR全景作为一个新兴蓝海项目,相信有着很多人刚接触VR行业的时候都会有这样的疑问:VR全景加盟后项目如何开展?今天,我们就从项目运营的三个阶段为大家讲解。 一、了解项目时 目前VR全景已经被应用到各行各业中去,学校、…

JAVA设计模式总结之23种设计模式

一、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计…

【零基础自用】理解python为什么要用虚拟环境

不知道学过MATLAB或者R的小伙伴刚刚接触python的时候会不会被各种python版本,包版本,虚拟环境之类的搞的头晕眼花。 问题一 包版本 先来假设,我们自己开发了一个包MyPackage 1.0,里面包含一个模块叫PreTrained,然后去…

曲线救国 | 双非渣硕的秋招路

作者 | 带带大兄弟 面试锦囊之面经分享系列,持续更新中 欢迎后台回复"面试"加入讨论组交流噢 一篇旧文,可以参考~ 写在前面 双非渣硕,0实习,3篇水文,三个给老板当打工仔的nlp横向项目,八月份开…

基于YOLOv5n/s/m不同参数量级模型开发构建茶叶嫩芽检测识别模型,使用pruning剪枝技术来对模型进行轻量化处理,探索不同剪枝水平下模型性能影响

今天有点时间就想着之前遗留的一个问题正好拿过来做一下看看,主要的目的就是想要对训练好的目标检测模型进行剪枝处理,这里就以茶叶嫩芽检测数据场景为例了,在我前面的博文中已经有过相关的实践介绍了,感兴趣的话可以自行移步阅读…

小研究 - Android 字节码动态分析分布式框架(四)

安卓平台是个多进程同时运行的系统,它还缺少合适的动态分析接口。因此,在安卓平台上进行全面的动态分析具有高难度和挑战性。已有的研究大多是针对一些安全问题的分析方法或者框架,无法为实现更加灵活、通用的动态分析工具的开发提供支持。此…