数据结构的相关概念

news2025/1/18 4:48:57

基本概念和术语

数据是对客观信息的一种描述,它是由能被计算机识别与处理的数值、字符等符号构成的集合。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

关键码值的是数据元素中能起标识作用的数据项。

关系指的是集合中元素之间的某种相关性。在集合中的元素之间可能存在一种或多种关系。

数据结构

若在特性相同的数据元素之间存在一种或多种特定的关系,则称该数据元素的集合为“数据结构”。换句话说,数据结构是带“结构”的数据元素的集合。在此,“结构”指的就是数据元素之间存在的关系。

数据结构包括(数据)逻辑结构和(数据)物理结构两个层次。数据的逻辑结构是对数据元素之间存在的逻辑关系的一种抽象描述,它可以用一个数据元素的集合和定义在此集合上的若干关系来表示;数据的物理结构则为其逻辑结构在计算机中的表示或实现,故又可称为存储结构

按照数据元素之间存在的逻辑关系的不同数学特性,通常有下列4类数据结构:
纯集合结构。该结构的数据元素间的关系是“属于同一个集合”,除此之外别无其他关系。
线性结构。该结构的数据元素之间存在着一对一的关系。
树型结构。该结构的数据元素之间存在着一对多的关系。
图状或网状结构。该结构的数据元素之间存在着多对多的关系。

在这里插入图片描述
与逻辑结构相对应,存储结构包括数据元素的表示和关系的表示两个方面。其中,表示关系有两种不同方法,相应得到两类存储结构:
一种是利用数据元素在存储器中相对位置之间的某种特定关系来表示数据元素之间的逻辑关系,称为顺序存储结构;另一种是用附加的“指针”表示数据元素之间的逻辑关系,称为链式存储结构

数据类型和抽象数据类型

抽象数据类型(Abstract Data Type ,简称ADT):一个数据结构加上定义在这个数据结构上的一组操作。例如,“整数”是一个抽象数据类型,其数学特性和具体的计算机或语言无关。“抽象”的意义在于强调数据类型的数学特性。

数据类型:是一个值的集合和定义在此集合上的一组操作的总称。例如, C语言中的整型变量,其值为某个区间上的整数(依赖于机器),定义在其上的操作为加、减、乘、除和取模等算术运算。

抽象数据类型和数据类型实质上是一个概念, 只是抽象数据类型的范围更广, 除了已有的数据类型外,抽象数据类型还包括用户在设计软件系统时自己定义的数据类型。

ADT的定义取决于它的一组逻辑特性,与其在计算机内的表示和实现无关。因此,不论 ADT的内部结构如何变化,只要其数学特性不变,都不影响其外部的使用。

抽象数据类型的最重要的特点是抽象和信息隐蔽。抽象的本质是抽取反映问题本质的东西,忽略非本质的细节,从而使所设计的数据结构更具有一般性,可以解决一类问题。信息隐蔽就是对用户隐蔽数据存储和操作实现的细节,使用者仅需了解抽象操作,或界面服务,通过界面中的服务来访问这些数据。

一个含抽象数据类型的软件模块通常应包含定义、表示和实现三部分。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFC/WIN32程序美化之使用skinH更换皮肤

官网 https://www.skinsharp.com/htdocs/index.htm 使用比较简单 使用到skinH.dll,这是程序运行的动态支撑库,还有skinH.lib文件,编译时用到的。还有SkinH.h头文件,里面包含了skinH.dll的库函数和功能注释、宏定义 使用VS创建一个WIN32项目 这就是默认的窗体效果了 加了…

SpringBoot AOP

SpringBoot AOP 目录SpringBoot AOP写法一: Before("execution(* com.bjpowernode.springboot07.javabean.Man.eat(..))")一、AOP开发1.1 概述1.2使用方法1.3创建项目并添加maven依赖1.4 创建Javabean测试类1.5 创建切面1.6 测试类1.7 测试结果1.8 结论1.…

pytest学习和使用16-HTML报告如何生成?(pytest-html)

16-HTML报告如何生成?(pytest-html)1 插件介绍2 pytest-html安装3 生成报告3.1 插件执行方式3.2 执行效果3.3 指定报告生成的路径4 合并css5 报告中的行显示设置6 报告增强6.1 自定义css6.2 报告标题6.3 环境6.4 其他摘要信息6.5 Extra内容6.…

198. 打家劫舍

198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

MySQL调优-Innodb引擎SQL执行的BufferPool缓存机制

目录 Innodb引擎SQL执行的BufferPool缓存机制 为什么Mysql不能直接更新磁盘上的数据而且设置这么一套复杂的机制来执行SQL了? 为什么直接更新磁盘是随机读写?为什么读写磁盘的日志文件是顺序读写? 为什么不直接读写磁盘而是选择读写Buffer…

【吐槽贴】项目经理的进阶日常:项目要收尾了,我却慌了

最近忙着写年终总结,还以为这次的年终奖稳了,结果犯了一个致命的错误,年终奖差点都没了。我负责的一个项目由于客户方比较着急,计划在过年放假前要完成交付,项目进度都完成的差不多了。现在还剩近10天的工期&#xff0…

2022尚硅谷SSM框架跟学(二)MyBatis基础二

2022尚硅谷SSM框架跟学二MyBatis基础二6.MyBatis的各种查询功能6.1查询一个实体类对象6.2查询一个list集合6.3查询单个数据MyBatis别名对应文档6.4查询一条数据为map集合6.5查询多条数据为map集合(1)方式一(2)方式二7.特殊SQL的执行7.1模糊查询7.2批量删除7.3动态设置表名7.4添…

SpringBoot+VUE前后端分离项目学习笔记 - 【16 SpringBoot集成JWT】

JWT简介 JWT是json web token缩写。用点号分为三段,分别表示头、信息和签名。可以使用在RESTFUL接口定义, 也可以使用在普通的web。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过密钥验证token的正确性,判断是…

模板的基本概念

模板函数模板泛型编程基本概念函数模板格式函数模板的实现函数模板的实例化类模板类模板格式类模板的实例化模板参数的匹配原则复数的相加函数模板 泛型编程 泛型编程是编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 基本概念 函数模…

【自学C++】C++命名空间引入

C命名空间引入 C命名空间引入教程 C 中的命名空间的引入,我们通常使用 using 语句后面加上命名空间名即可。 C命名空间引入详解 语法 using namespace namespaceName参数 参数描述using引入命名空间使用的关键字。namespace引入命名空间使用的关键字。namespa…

数影周报:2亿Twitter用户资料仅售2美元,微盟集团将筹约15.9亿港元

本周看点:黑客以2美元出售2亿Twitter用户个人资料;Twitter 第三轮裁员;京东科技成立京东云事业部;TikTok Shop越南收入赶超Lazada;微盟集团将筹资约15.9亿港元......数据安全那些事黑客以2美元出售2亿Twitter用户资料近…

2023年山东最新建筑施工架子工(建筑特种作业)模拟题库及答案

百分百题库提供特种工(架子工)考试试题、特种工(架子工)考试预测题、特种工(架子工)考试真题、特种工(架子工)证考试题库等,提供在线做题刷题,在线模拟考试,助…

mosquitto使用与openssl证书配置

开发环境:ubuntu18.04 64bitmqtt客户端测试工具:mqtt.fx 1.7.11.安装# 引入库 sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update # 安装 sudo apt-get install mosquitto #安装客户端 sudo apt-get install mosquitto-clie…

《NDT-LOAM: A Real-Time Lidar Odometry andMapping With Weighted NDT and LFA》深大学生

Abstract激光雷达同时定位和建图(Lidar-SLAM)从激光雷达上处理点云,并完成定位和建图。激光激光通常分为前端里程计和后端优化,可以并行运行以提高计算效率。前端里程计通过处理点云来估计激光雷达的运动,在点云配准中…

python自学之《21天学通Python》(6)

第9章 迭代器、生成器与装饰器 迭代器、生成器与装饰器是Python语言中常用的语法形式。 迭代器的使用简化了循环程序的代码并可以节约内存,生成器的使用也可以节约大量的内存,特别是需要生成大量序列的对象时。迭代器是一种可以从其中连续迭代的一个容器…

Shell 数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。与大部分编程语言类似,数组元素的下标由 0 开始。Shell 数组用括号来表示,元素用…

教你如何巧妙化解SSRF漏洞攻击

SSRF是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,ssrf攻击的目标是外网无法访问的内部系统。简单来说就是利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。 SSRF漏洞( 服务器端请求伪造 &a…

【pandas】教程:9-如何轻松处理时间序列数据

Pandas 如何轻松处理时间序列数据 数据 本节使用的数据为 data/air_quality_no2_long.csv,链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库 import pandas as pd import matplotlib.pyplot as pltair_quality pd.read_csv("data/air_qua…

实战字节码-01-基础知识

开篇字节码是什么、做什么这类问题不在这里赘述,《实战字节码》系列旨在帮助没接触过字节码的人能够快速上手做应用开发,并构建字节码技术的知识骨架,所以不会系统地介绍字节码技术的方方面面,也尽量避免叙述理论和概念相关的东西…

【笔记:模拟CMOS集成电路】噪声——基本电路噪声性能(2)

【笔记:模拟CMOS集成电路】噪声——基本电路噪声性能(2)前言1 噪声——分析基础2 噪声——基本电路噪声性能2.1 MOS管噪声模型(1)电阻RG热噪声和沟道热噪声(2)衬底电阻热噪声(3)源极寄生电阻RS热噪声2.2常见组态的单级放大器噪声分析2.2.1 CS…