1、数据结构的基本概念

1.1、数据

  • 数据就是用来描述客观事务的数值、字符、能够输入到计算机并被计算机处理的各种符号的集合
  • 数据就是信息在计算机中的表示形式

    1.2、数据元素

  • 数据元素就是数据的基本单位,在计算机程序当中通常把数据元素最为一个整体进行处理

  • 例如:
    • 描述用户信息的一条记录就是一个数据元素
    • 描述平面坐标系中一个点坐标信息就是一个数据元素
  • 数据元素通常有若干个数据项组成,例如:

    • 用户信息的姓名、年龄等信息都是数据项
    • 坐标的横坐标、纵坐标都是数据项

      1.3、数据对象

  • 一组相同性质的数据元素的集合就是数据对象,例如:

    • 学校中所有学生的集合就是数据对象
    • 平面坐标系中所有点的集合就是数据对象

      1.4、数据结构

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

  • 数据结构分为逻辑结构和物理结构

    1.4.1、数据逻辑结构

  • 数据逻辑结构分为四种:

    • 集合结构:数据仅仅是属于一个集合,没有其他的相互关系
    • 线性结构:描述一个一对一的关系,类似于一本书对应一个目录
    • 树形结构:描述一个一对多的关系,类似与族谱
    • 图形结构: 描述一个多对多的关系
  • 数据逻辑结构一般采用二元组的形式定义:

    • 数据结构=(D , S)
      • D:数据元素的集合
      • S:D元素集合中元素关系的集合

        1.4.2、数据物理结构

  • 数据的物理结构就是逻辑结构在计算机中的存储表示,有两种表示形式:

    • 顺序存储:使用一块连续的存储空间,数据之间是紧挨在一起的,数据的前驱和后继的关系可以通过数据元素在内存中的相对位置表示出来

image.png

  • 链式存储:数据元素的存储位置不是连续的,每个元素保存下一个元素的存储位置,

image.png

1.5、示例

1.5.1、集合结构

  • 二元组:set=(D,S),其中

    • D={01,02,03,04,05}
    • S={ }
    • 在set中,数据元素除了属于同一个集合外,不存在其他的关系,set是一个集合结构

      1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12407770/1611985859027-91ac2987-d0c3-4c9d-a361-9eca83fd0d59.png#align=left&display=inline&height=187&margin=%5Bobject%20Object%5D&name=image.png&originHeight=261&originWidth=375&size=6321&status=done&style=none&width=268)

      1.5.2、线性结构

  • 二元组:linearity=(D,S)

    • D={01,02,03,04,05,06}
    • S={<01,04>,<04,06>,<06,02>,<02,05>,<05.03>}
    • 在linearity中,数据元素是有序的,有一个头元素(01),还有一个尾元素(03),除了头元素之外其余元素都有一个直接前驱元素,除尾元素之外,其他每个元素都有一个直接后继元素,数据元素之间是一对一的关系,linearity就是一个线性结构

image.png

1.5.3、树形结构

  • 二元组:tree=(D,S)

    • D={01,02,03,04,05,06}
    • S={<01,02>,<01,03>,<02,04>,<02,05>,<03.06>}
    • 在tree中,除了根元素(01)之外,每个元素有且仅有一个直接前驱元素,每个元素可以有多个直接后继元素,数据元素之间是一个一对多的关系,tree我们称之为树形结构

      1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12407770/1611986650725-046281f4-f9de-4e58-8afc-36fb6da3214f.png#align=left&display=inline&height=250&margin=%5Bobject%20Object%5D&name=image.png&originHeight=275&originWidth=458&size=9687&status=done&style=none&width=416)<br />

      1.5.4、图形结构

  • 二元组:grap=(D,S)

    • D={01,02,03,04,05,06}
    • S={<01,02>,<01,03>,<02,05>,<05,06>,<06.02>,<05,04>,<04,05>}
    • 在grap中,每个元素都可以有多个直接前驱元素,每个元素也可以有多个后继元素,数据元素之间是一个多对多的关系,grap我们称为图形结构

image.png

2、抽象数据类型

  • 数据类型:一组性质相同的数据的集合及该数据集合上操作的总称
    • 例如Java中的int类型,数据的集合,-2147483648~2147483647,在这组数据上的操作:+、-、*、/、%等
  • 抽象数据类型(ADT):一组数据模型及该模型上的一组操作组成
  • 抽象数据类型一般使用一个三元组表示:
    • ADT=(D , S , P)
      • D:数据对象
      • S:D上的关系
      • P:D上的操作
  • 定义抽象数据类型,可以使用以下格式:

    1. ADT 抽象数据类型名{
    2. 数据对象:<数据对象的定义>
    3. 数据关系:<数据关系的定义>
    4. 数据操作:<基本操作的定义>
    5. }
  • 抽象数据类型对应一个Java类,数据对象与数据关系可以通过类的成员变量来存储,成员操作可以使用方法来实现