数据结构系列1-数据结构绪论

导言

数据结构系列,一直是希望重新学习整理的一个系列,现在有时间,对数据结构方面进行一个回顾,把零散的数据结构碎片串联起来,作为一个整理,本系列主要参考书籍有:

  • < 大话数据结构 >
  • 数据结构与算法分析

1 数据结构的基本概念

1.1 数据

那么什么是数据呢?
数据是描述客观事实的符号,是计算机可以操作的对象,能被计算机识别,并输入给计算机处理的符号集合,比如:

  • 数值类型(整型、实型等,可以进行数值计算)
  • 非数值类型(声音、图像、视频等通过编码手段变成字符数据来处理)

1.2 数据元素

是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被成为记录
比如相对于社会,每个独立的人就是一个数据元素

1.3 数据项

一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位
比如:一个人(数据元素)拥有年龄,身高,体重,职业等等数据项,也可以拥有眼睛,鼻子等等数据项,具体需要哪些数据项,由你要开发的系统决定
数据项是数据不可分割的最小单位,我们在真正讨论问题时,数据元素才是数据结构中建立模型的着眼点。就像我们谈论一部电影时,是讨论这部电影角色这样的“数据元素”,而不是针对这个角色的姓名或者年龄这样的“数据项”去研究分析。

1.4 数据对象

是性质相同的数据元素的集合
什么叫性质相同呢,是指数据元素具有相同数量和类型的数据项,比如人都有姓名、生日、性别等相同的数据项。因数据对象是数据的子集,在实际应用中,在不产生混淆的情况下,我们都将数据对象简称为数据。

1.5 数据结构

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

上面的概念着实有点枯燥,但是都是基本需要理解的概念

2 数据结构

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

2.1逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系
逻辑结构分为以下4种: 1–集合结构;2–线性结构;3–树形结构;4–图形结构

2.1.1 集合结构

集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系,各个元素是“平等”的,它们的共同属性是“同属于一个集合”,类似数学中的集合,如下图所示:
数据结构系列1-数据结构绪论_第1张图片

2.1.2 线性结构

线性结构中的数据元素之间是一对一的关系,如下图所示:
数据结构系列1-数据结构绪论_第2张图片
我们比较常见的,数组,链表,队列等都是线性结构

2.1.3 树行结构

数据元素之间存在一种一对多的层次关系,如下图所示
数据结构系列1-数据结构绪论_第3张图片

2.1.4 图形结构

数据元素是多对多的关系,如下图所示
数据结构系列1-数据结构绪论_第4张图片
逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系

2.2 物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式
数据结构的存储结构形式有2种:顺序存储和链式存储

2.2.1 顺序存储

是把数据元素存储在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
顺序存储
说白了,就是占位,数组就是这种结构

2.2.2 链式存储

是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,用一个指针存放数据元素的地址,通过地址可以找到相关数据元素的位置
典型的链式相似场景;比如银医院等地方,设置了排队系统,每个人去了,先领一个号,等着叫号,叫到时去办理业务或看病。在等待的时候,爱在哪在哪,可以坐着、站着,去外面溜达一圈,只要及时回来就行。你关注的是前一个号有没有被叫到,叫到了,下一个就轮到了。
数据结构系列1-数据结构绪论_第5张图片
总结:
逻辑结构:

  • 集合
  • 线性结构
  • 树形结构
  • 图形结构

物理结构

  • 顺序结构
    数组大小固定,查找迅速,增删复杂,需要完整的内存块,容易产生碎片。
  • 链式结构
    大小可以动态调整,增删迅速,查找较慢,数据元素所占内存略多,不需要整块内存块,不会造成碎片化。

你可能感兴趣的:(数据结构和算法)