一 数据结构简介
数据结构主要研究非数值计算程序设计中的操作对象,和这些对象之间的关系和操作的学科
二 基本概念和术语
数据:客观事物的符号表示
数据元素:数据的基本单位,也称元素、记录
数据项:组成数据元素的、有独立含义的、不可分割的最小单位
数据对象:是性质相同的数据元素的集合,是数据的一个子集
三 数据结构
3.1 数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合,数据结构是带“结构”的数据元素的结合,“结构”就是数据元素之间的关系
数据结构分为逻辑结构和存储结构,存储结构也叫物理结构
3.2 逻辑结构
逻辑结构是两个要素,一是数据元素,二是关系。关系是指数据元素之间的逻辑关系。
3.2.1 四类基本结构
(1) 集合结构
元素之间只有一种关系就是“属于一种结合”,别无其他关系
(2) 线性结构
数据元素之间存在一对一的关系,组成线性结构
(3) 树结构
数据元素之间存在一对多的关系,比如一个班级中的班长管理组长,组长管理组员的树状结构
(3) 图结构或者网状结构
数据元素之间存在多对多的关系,比如多为同学之间的关系,每两位同学都有可能成为朋友
其中集合结构、树结构、图结构都是非线性结构。
下图为逻辑结构的层次图
3.3 存储结构
存储结构分为顺序存储结构和链式存储结构,数据存储按地址从低到高存储方向存储,存储空间需要是一片连续的存储空间,而链式存储结构无需占用一整片存储空间,需要给每个结点附加指针字段,用于存储后继元素的存储地址
四 数据类型和抽象数据类型
4.1 数据类型
顺序存储结构属于数组类型,链式存储结构属于指针类型,所以数据类型和数据结构的概念密切相关
数据类型是一个值的结合和定义在这个值集上的一组操作的名称,例如C语言中的整型的加减乘除
4.2 抽象数据类型
抽象就是抽取实际问题的本质,不必考虑实现细节
抽象数据类型一般由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的名称,具体包括三部分:数据对象、数据对象的关系的集合以及数据对象的基本操作
定义格式如下:
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
其中,数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:
基本操作名:(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
基本操作有两种参数:赋值参数职位操作提供输入值,引用参数以“&”打头,除可提供输入值外,还可返回操作结构