数据结构与算法初级教程

发表时间: 2021-03-04 17:09

什么是数据

数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并且输入给计算机处理的符号集合

例如基本数据类型,int、char、float、double、short、long等,还包括struct、enum等,还可以是音视频,文本,数据库文件等被编码的字符数据。

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录

例如整型中的元素:25,-20,0等,浮点数类型:0.01,0.001,0.0001等,再例如班级中的数据元素是学生、老师等。

数据项:一个数据元素可以由若干个数据项组成

例如学生这样的元素,穿校服、有学号、有教科书,例如树木,有根、叶子和树枝。数据项是数据的最小单位,不可再分。

数据对象:是性质相同的数据元素的集合,是数据的子集

例如男人、女人都是数据的人的子集,然而他们的性质不同。

什么是数据结构

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

数据元素之间的一种或多种关系,比如学生和学生之间,学生和老师之间等等。

数据结构 —— 逻辑结构

集合结构

集合很简单,就是独立存在的数的集合,例如Python当中的set集合等。

线性结构

数据结构中数据元素是1对1的关系,例如数学等差数列{an}

1 2 3 4 5 6 ... an

其中有些特性

  1. 首元素没有前驱,尾元素没有后继
  2. 中间元素都有唯一的前驱和后继

其中前驱是指:当前元素前一个元素,后继是指:当前元素的下一个元素。例如:2这个元素,前驱是1,后继是3。

树形结构

数据元素中存在一对多的层次关系,如下图:

典型树形结构

树的特性:

  1. 其中A是根节点没有前驱,只有后继元素,也没有同级节点
  2. B、C、D每个节点的前驱只能是A,有且只有一个前驱,同级元素之间没有关系,B、C、D之间没有关系
  3. E、F、G、H、I、J这样的节点,有且只有一个前驱元素,没有后继元素,之间没有联系,成为叶子节点

特殊的树——二叉树:

二叉树

二叉树特点:

  1. 每个节点向下分成两个子节点,左边的成为左子树,右边的成为右子树
  2. 每个节点都有左子树和右子树,称为满二叉树
  3. 对于一棵具有n个节点的二叉树按层序编号,如果编号为i的节点与同样深度的满二叉树编号i的节点在二叉树的位置完全相同,则称这棵二叉树为完全二叉树,如图:


完全二叉树

二叉树在数据结构中非常重要,也是最基础,需要掌握的数据结构,其性质之后将会讨论,本节知识大概介绍一下。

多个树就是森林,如图:

森林

森林、树和二叉树可以相互转化

图形结构

每个数据元素的前驱和后继都是多个,是多对多的关系,如图


以上给大家介绍了基本的数据结构,我们还需要深入了解一些这些数据结构的应用场景,以及算法对于数据结构的支持。