1.1 本篇知识框架
1.2 基本概念
1.2.1 数据元素和数据项
我们先来讲一个例子:中华民族由 56 个民族组成。
因为数据元素通常作为整体,且可分割成若干个数据项,而数据项是不可再分割的,所以这个例子中,中华民族就是数据元素,而 56 个民族就是数据项。严谨的定义如下:
数据元素是数据的基本单位,通常作为一个整体。一个数据元素可分割成若干数据项,数据项是构成数据元素的最小单位,所以数据项是不可再分割的。
下面我们用面向对象的思维来理解数据元素和数据项,比如学生这个对象,学生这个对象由 id、学号、姓名、性别、手机号码等等属性构成,这样看来,学生就是数据元素,id、学号、姓名、性别、手机号码等属性就是数据项。
1.2.2 数据结构和数据对象
我们去外面吃饭的时候,通常会领到一个号码牌,同一家餐饮店的顾客号码往往有着先后关系,而不同餐饮店的顾客号码没有什么关系。所以呢,同一家餐饮店的顾客号码就是数据结构,而所有餐饮店的顾客号码就是数据对象。
图
1.2.2
−
1
同
一
家
餐
饮
店
的
顾
客
关
系
图 1.2.2-1 同一家餐饮店的顾客关系
图1.2.2−1同一家餐饮店的顾客关系
看到这可能有读者要犯嘀咕了,数据结构不是什么单链表、树、图……这些吗,怎么会是同一家餐饮店的顾客号码呢?
我们来看看数据结构和数据对象的严谨定义:
- 数据结构:相互之间存在一种或多种特定关系的数据元素的集合
- 数据对象:具有相同性质的数据元素的集合
根据数据结构的定义,我们可以知道,数据结构其实就是有着特定关系的多个数据元素,单链表就是一对一关系的数据元素,树就是一对多关系的数据元素,图就是多对多关系的数据元素。上面提到的同一家餐饮店的顾客号码是按先后顺序排序的,所以是一对一的关系。
图
1.2.2
−
2
一
对
一
关
系
图 1.2.2 - 2 一对一关系
图1.2.2−2一对一关系
图
1.2.2
−
3
一
对
多
关
系
图 1.2.2 - 3 一对多关系
图1.2.2−3一对多关系
图
1.2.2
−
4
多
对
多
关
系
图 1.2.2 - 4 多对多关系
图1.2.2−4多对多关系
1.3 数据结构三要素
明白了数据结构就是具有特定关系的数据元素的集合后,我们把数据结构的特定关系叫做逻辑结构,但逻辑结构只是我们人看得懂的蓝图,计算机看不懂,所以要把逻辑结构转换成计算机语言,逻辑结构的计算机语言就是存储结构。此外我们往往需要对数据做出初始化、增删改查等操作,这些操作就是数据的运算。所以,逻辑结构、存储结构和数据的运算就是数据结构的三要素。
下图是单链表从逻辑结构到单链表的形成过程
图 1.3 − 1 单 链 表 形 成 过 程 图 1.3 - 1 单链表形成过程 图1.3−1单链表形成过程
1.3.1 逻辑结构
逻辑结构就是数据元素之间的逻辑关系,包括集合、线性结构、树形结构和图状结构。
- 集合:各个数据元素同属一个集合,别无其它关系
- 线性结构:即一对一关系
- 树形结构:即一对多关系
- 图状结构:即多对多关系
图
1.3.1
−
1
逻
辑
结
构
图 1.3.1 - 1 逻辑结构
图1.3.1−1逻辑结构
1.3.2 存储结构
存储结构分为顺序存储和非顺序存储。
1.3.2.1 顺序存储
顺序存储:相邻数据元素在内存中的存储位置也相邻,比如:数组
图
1.3.2
−
1
顺
序
存
储
图1.3.2 - 1 顺序存储
图1.3.2−1顺序存储
1.3.2.2 非顺序存储
非顺序存储:相邻数据元素在内存中的存储位置不相邻,包括链式存储、索引存储和散列存储
- 链式存储:即链表
- 索引存储:包括二叉树、B+ 树、红黑树
- 散列存储:常见的有哈希表
1.4 总结
图
1.4
−
1
总
结
图 1.4 - 1 总结
图1.4−1总结