数据结构的一些基本概念

数据结构之基本概念

我们不论作为计算机专业的同学还是已经工作的程序猿/媛,都绕不开数据结构这个技术点,今天我们来聊一聊它。

1. 数据结构在学什么

  • 如何用程序代码把现实世界的问题信息化
  • 如何用计算机高效地处理这些信息从而创造价值

人类社会的发展,迄今经历了和经历着三个浪潮:第一次浪潮为农业阶段,从约1万年前开始;第二次浪潮为工业阶段,从17世纪末开始;第三次浪潮为正在到来的信息化阶段。 —-《第三次浪潮(1980版)》,阿尔文·托夫勒

信息化的例子:

image-20210121180439657

image-20210121180529839

image-20210121180659467

image-20210121183526427

以上种种,已经包含了我们日常生活的方方面面。

image-20210121183821924

唯一可以确定的是,明天会使我们所有人大吃一惊。

​ ——阿尔文·托夫勒

image-20210121184100511

2. 数据结构的一些基本概念

image-20210121191134642

1)基本概念

  • 数据:

    数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

    image-20210121191732522

​ 计算机可以识别的是 0 和 1 的二进制数。

  • 数据元素、数据项:

    数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。

    一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。

image-20210121192432608

  • 结构

    各个元素之间的关系。

image-20210121192916299

  • 数据结构、数据对象

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

    数据对象:是具有相同性质的数据元素的集合,是数据的一个子集。

    向上面的海底捞的例子:

    数据结构:某个特定门店的排队顾客信息和它们之间的关系

    image-20210121193458588

    数据对象:全国所有门店的排队顾客信息

    image-20210121193541772

下面以一张图来显示这些概念之间的关系:

image-20210121193815961

  • 数据类型

    数据类型是一个值的集合和定义在此集合上的一组操作的总称。

    • 原子类型:其值不可再分的数据类型。

    image-20210121194401094

    • 结构类型:其值可以再分解为若干成分(分量)的数据类型。

image-20210121194418870

  • 抽象数据类型(ADT)

    抽象数据类型是抽象数据组织及与之相关的操作。

2)数据结构的三要素

  1. 逻辑结构

    数据元素之间的逻辑关系。

    image-20210121195058057

  • 集合

    各个元素同属一个集合,别无其他关系。

    image-20210121195226858

  • 线性结构

    数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继

image-20210121195542968

image-20210121195557057

  • 树形结构

    数据元素之间是一对多的关系。

    image-20210121195710117

image-20210121195731919

  • 图结构

    数据元素之间是多对多的关系。

    image-20210121195859714

image-20210121195914485

image-20210121200001213

  1. 物理结构(存储结构)

    计算机表示数据元素之间逻辑关系的结构。

    image-20210121202305032

  • 顺序存储

    把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

    image-20210121200639304

image-20210121200653248

  • 链式存储

    逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

    image-20210121201123292

image-20210121201137695

  • 索引存储

    在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)。

    image-20210121201651198

image-20210121201705865

  • 散列存储

    根据元素的关键字直接计算出该元素的存储地址,又称为哈希(Hash)存储。

image-20210121202115710

​ 后面将介绍计算哈希值的方法

image-20210121202225813

再来理解一波,花开😎

1)若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。

2)数据的存储结构会影响存储空间分配的方便程度。(比如,有人想插队)

3)数据的存储结构会影响对数据运算的速度。(比如,想找到某个人)

image-20210121203244357

image-20210121203257410

  1. 数据的运算

    施加在数据上的运算包括运算的定义实现运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

image-20210121203627747

​ 后面会学习具体的数据结构类型,就会学习定义和实现。

如果大家想了解更多,可以关注一下微信公众号:程序员应如是,获取更多优质内容。