“数据结构”主要学习用计算机实现数据组织和数据处理的方法。
(1)理解数据结构的定义,数据结构包含的逻辑结构、存储结构和运算三方面的相互关系。
图一:
定义 | 举例 | |
数据(data) | 描述客观事物的数和字符的集合。从计算机的角度看,是能被输入到计算机且能被计算机处理的符号的集合,是计算机操作的对象的总称。基本单位:数据元素(data element) | 20级计算机6班学生数据(该班全体学生记录的集合) |
数据元素(data element) | 也称为 元素、结点、顶点、记录 | (每个学生的记录都是一个数据元素) |
数据项(data item) | 有独立含义的数据最小单位,也称为 字段、域 | (学生的学号、姓名、年龄、性别) |
数据对象(dataobject) | 数据元素的集合,是数据的一个子集 | 20级计算机6班学号前10位学生的数据 |
图二:
定义 | |||
数据结构(data structure) | 所有数据元素与数据元素之间的关系,相互直接存在某种特定关系的数据元素的集合 | 带结构的数据元素的集合 | |
表示方法 | 类型 | ||
逻辑结构(logical structure) | 由数据元素之间的逻辑关系构成 | 图表表示、 二元组表示B=(D,R) | 集合、线性结构【一对一】、树形结构【一对多】、图形结构【多对多】 |
存储结构(storage structure) | 逻辑结构在计算机中存储的存储表示,也称为数据的物理结构(physical structure) | ①顺序存储结构(连续的存储空间)【存储系效率高、可对元素随机存取;不便于数据的插入或删除】 ②链式存储结构(存储空间无须连续)【便于数据修改;存储空间的利用率低、不可对元素随机存取】 ③索引存储结构(指在存储数据元素信息的同时还建立附加的索引表)【查找效率高;因需要建立索引表而增加空间开销】 ④哈希(或散列)存储结构(根据元素的关键字通过哈希(或散列)函数直接计算出一个值,并将这个值作为该元素的存储地址)【查找速度快;一般只适合要求对数据能够进行快速查找和插入的场合】 ④与①②③不同之处在于:④只存储元素的数据,不存储元素直接的逻辑关系。 | |
运算(operation) | 施加在该数据上的操作 | ①运算定义:运算功能的描述、抽象的、基于逻辑结构的; ②运算实现:程序员完成运算的实现算法,具体的,基于存储结构的; |
图三:
逻辑结构、存储结构和运算之间的关系:
(2)掌握各种逻辑结构(即线性结构、树形结构和图形结构)的特点。
逻辑结构的类型 | 特点 | 举例 | |
线性结构 | 开始元素和终端元素都是唯一的,除了开始元素和终端元素外。其余元素都有且仅有一个前驱元素、后继元素 | 线性表 | |
非线性结构 | 树形结构 | 除了开始元素外,每个元素有且仅有一个前驱元素; 除了终端元素外,每个元素有且仅有一个或多个后继元素 | 二叉树 |
图形结构 | 每个元素的前驱元素和后继元素的个数可任意个。可能没有开始元素和终端元素,也可能有多个开始元素和终端元素 | 有向欧拉图 |
(3)了解各种存储结构(即顺序存储结构、链式存储结构、索引和散列)之间的区别。
见图二存储结构的类型
(4)了解数据类型和抽象数据类型的概念和区别
概念 | 区别 | |
数据类型 data type | 是一组性质相同的值的集合和定义在此集合上的一组操作的总称,是某种程序设计语言中已实现的数据结构 | ADT对一个求解问题从逻辑上进行了准确的定义,ADT由数据逻辑结构和运算定义两部分组成。抽象数据类型需要通过固有的数据类型来实现。 |
抽象数据类型 abstract data type(ADT) | 用户进行软件系统设计时从问题的数学模型中抽象出来的逻辑数据结构和其上的运算,不考虑计算机的具体存储结构的运算的具体实现算法 |
(5)掌握算法定义及特征
定义 | 特征(5个) | |
算法algorithm | 对特定问题求解步骤的一种描述,是指令的有限序列。 | 有穷性、确定性、可行性、 有输入、有输出 |
(6)掌握使用C/C++语言描述算法的方法。
算法设计的步骤: 分析算法功能---- >确定算法有哪些输入、输出---- >设计函数体
(7)重点掌握算法的时间复杂度和空间复杂度分析方法。
(8)掌握从数据结构的角度求解问题的基本过程。