[入门必看]数据结构1.1:数据结构的基本概念
- 第一章 绪论
- 1.1 数据结构的基本概念
- 知识总览
- 1.1.1 基本概念和术语
- 数据类型、抽象数据类型:
- 1.1.2 数据结构的三要素
- 数据的逻辑结构
- 数据的物理结构(存储结构)
- 数据的运算
- 知识回顾与重要考点
第一章 绪论
小题考频:8
大题考频:11
1.1 数据结构的基本概念
难度:☆
知识总览
数据结构
- 基本概念
- 数据
- 数据元素、数据项
- 数据对象、数据结构
- 数据类型、抽象数据类型(ADT)
- 三要素
- 逻辑结构
- 物理结构(存储结构)
- 数据的运算
本节概念多,抓大放小,形成知识框架,不必纠结细节概念。
1.1.1 基本概念和术语
- 数据:是信息的载体 - 能输入到计算机中并被计算机程序识别
——二进制0和1 - 数据元素:数据的基本单位,通常作为一个整体进行考虑和处理,可由若干数据项组成。
——学生记录 - 数据元素;学号、姓名、性别等 - 数据项
——账号 - 数据元素;昵称 - 数据项1;性别 - 数据项2;年 月 日 - 组合项
要根据实际的业务需求来确定什么是数据元素、什么是数据项。
- 数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
- 数据对象:是具有相同性质的数据元素的集合,是数据的一个子集。
数据结构:某个特定门店的排队顾客信息和它们之间的关系 —— 有关系
数据对象:全国所有门店的排队顾客信息 —— 有相同性质
数据类型、抽象数据类型:
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
- 具体数据类型
1)原子类型。其值不可再分的数据类型。
2) 结构类型。其值可以再分解为若干成分(分量)的数据类型。
在结构体中可以定义不同的分量,其可以是不同的数据类型。
可以取哪些值,进行哪些操作,根据具体的业务需求决定。
- 抽象数据类型
抽象数据类型(Abstract Data Type,ADT)是抽象数据组织及与之相关的操作。
ADT用数学化的语言定义数据的逻辑结构、定义运算。
与具体的实现无关 - 不讨论具体的存储结构。
1.1.2 数据结构的三要素
数据的逻辑结构
- 集合
- 线性结构
- 树形结构
- 图状结构(网状结构)
-
集合:
-
线性结构:
-
树形结构:
-
图结构:
集合基本不讨论
线性结构在第二、三章
树形结构在第四章
图结构第五章
数据的物理结构(存储结构)
各个数据元素在内存中如何存储
如何用计算机表达数据元素的逻辑关系
- 顺序存储
- 链式存储
- 索引存储
- 散列存储
- 顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
-
链式存储。逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
-
索引存储。在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)
- 散列存储。根据元素的关键字直接计算出该元素的存储地址,又称哈希( Hash)存储
将在第六章,散列表中介绍。
可以将顺序存储以外的几种存储结构统称为:非顺序存储
绪论部分需要理解三点:
- 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。
顺序存储 - 排队
非顺序存储(离散存储) - 取号
- 数据的存储结构会影响存储空间分配的方便程度
Eg. 如果有人想插队
顺序存储 - 插队位置后所有人挪一位
非顺序存储(离散存储) - 可分配到任何一个空闲的位置
- 数据的存储结构会影响对数据运算的速度
Eg. 找到第三个人
顺序存储 - 直接找站在第三位的
非顺序存储(离散存储) - 从取的号开始找
数据的运算
施加在数据上的运算包括运算的定义和实现。
运算的定义是针对逻辑结构的,指出运算的功能;
运算的实现是针对存储结构的,指出运算的具体操作步骤。
- Eg.排队:
- 定义:
逻辑结构 - 线性结构(队列)
结合现实需求定义队列这种逻辑结构件的运算:
①队头元素出队;(叫号)
②新元素入队;(取号)
③输出队列长度;
……
- 实现:
存储结构 - 顺序/链式
知识回顾与重要考点
数据结构这门课着重关注的是数据元素之间的关系,和对这些数据元素的操作,而不关心具体的数据项内容
定义一个ADT,就是定义了数据的逻辑结构、数据的运算。也就是定义了一个数据结构。
确定一种存储结构,就意味着在计算机中表示出数据的逻辑结构。存储结构不同,也会导致运算的具体实现不同。确定了存储结构,才能实现数据结构