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

零度安全
• 阅读 1417

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

数据

  • 数据是输入计算机且能被计算机处理的各种符号的集合
  1. 信息的载体
  2. 是对客观事物的符号化的表示
  3. 能被计算机识别,存储和加工
  • 数据包括
  1. 数值型数据:整数,实数等。
  2. 非数值型数据:文字,图像,图形,声音等。

数据元素和数据项

数据元素

  • 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。如下图一行可以是一个整体,所以是一个数据元素。
  • 也称之为元素,或称其为记录,结点,或者顶点。
  • 一个数据元素又可以有多个数据项组成

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

数据项

  • 数据项构数据元素的不可分割的最小单位
  • 下图中的一条数据记录(数据元素)有多个数据项构成。

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

总结

数据,数据元素,数据项之间的关系:

数据>数据元素>数据项

例如:学生表>个人记录>学号,姓名........

数据对象

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

数据对象与数据元素的区别

  • 数据元素------组成数据的基本单位,与数据的关系是:集合的个体

  • 数据对象------性质相同的数据元素的集合,与数据的关系:是集合的子集

数据结构

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

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

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

数据结构包括的内容

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

逻辑结构

  • 描述数据元素之间的逻辑关系
  • 与数据结构的存储无关,独立于计算机。
  • 具体的问题抽象出来的数学模型
逻辑结构的种类
划分方法一
  1. 线性结构:有且只有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和直接后继。比如线性表,栈,队列,串。(一对一
  2. 非线性结构:一个结点可以有多个true直接前趋和直接后继。例如最短路径问题和人机对弈问题。树和图。(多对多
划分方法二
  1. 集合结构: 结构中的数据元素除了同属于一个集合的关系外,无其他任何关系。
  2. 线性结构:结构中的数据之间存在着一对一的线性关系。
  3. 树形结构:结构中的元素之间存在着一对多的层次关系。
  4. 图状结构或网状结构:结构中的数据元素存在着多对多的任意关系。

物理结构(存储结构)

  • 是数据结构及其关系在计算机存储器的结构(存储方式)。
  • 是数据结构在计算机中的表示。
存储结构的种类
  1. 顺序存储结构:用一组连续的存储单元按照数据元素的顺序依次的存储数据元素,根据元素之间的逻辑关系由元素的存储位置来表示。类似于C语言的连续数组。
  2. 链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。例如C语言中的指针来实现链式存储和结构,存储元素的同时,在给与一个指针指向另一个元素。我们在存储一个元素本身的同时,还存储了下一个元素的地址
  3. 索引存储结构
  4. 散列存储结构

数据结构和存储结构的关系

  • 存储结构是逻辑关系的映像与元素的映像。
  • 逻辑结构是数据结构的抽象,存储结构是数据结构的实现。
  • 两者综合起来建立了数据元素之间的数据结构。
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Linux查看GPU信息和使用情况
1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反
零度安全
零度安全
Lv1
浓绿万枝红一点,动人春色不须多。
文章
1
粉丝
0
获赞
0
热门文章

暂无数据