1.1 什么是数据结构
数据结构是从实际问题中抽象出来的数学模型,用来解决实际问题的,由于抽象性,每种数据结构都能解决一大类的问题。
数据结构研究非数值处理问题中计算机的操作对象以及它们的关系及操作。
数据结构的内容包含很广,包含数学模型,计算机软件的一部分和计算机硬件的一部分。
1.2 基本概念和术语
数据 : 计算机进行处理的符号的总称。 可以是整数、实数、字符串,图像和声音也可以通过编码归之于数据。
数据元素:数据的基本单位。 作为一个整体进行考虑和处理。 数据元素可以包含多个数据项,数据项不可分割。
数据对象:具有相同性质的数据元素的集合。 数据的一个子集。 例如整数数据对象 N = {0,1,2......}
数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
数据元素之间的关系成为结构。
有四种基本结构:
(1)集合 : 数据元素之间除了“”同属一个集合外“”,不存在其他关系。
(2)线性结构: 数据元素一对一。
(3)树形结构: 数据元素一对多。
(4)图状结构: 数据元素多对多。
存储结构(物理结构): 数据结构在计算机中的表示。 包含数据元素的表示和关系的表示。
元素(结点):用若干个位组合起来形成的用来表示数据元素的位串。
数据域:数据元素有多个数据项时,位串中对应每个数据项的子位串叫做数据域。
数据元素之间关系在计算机中的表示方法: 顺序映像和非顺序映像。
由此得到两种存储结构:
顺序存储结构:通过元素在存储器中的相对位置表示数据元素之间的逻辑关系 。
链式存储结构:通过元素存储地址的指针表示数据元素之间的逻辑关系。
注:本书讨论的存储结构是建立在C语言上的虚拟存储结构,不是实际的内存地址存储结构。
数据类型:一个值的集合和定义在这个值集上的一组操作的总称。、
一个数据类型有一定的取值范围和允许的操作,例如加减乘除等。
数据类型分为两类:
原子类型:值不可分解,例如整型,实型,字符型,枚举型,指针等。
结构类型:可以分解,结构类型的值由若干成分按一定结构组成,它的成分可以是结构的,也可以是非结构的。
抽象数据类型:一个数学模型和定义在该数学模型上的一组操作。与计算机内如何表示和实现无关。
“抽象”是数学意义上的抽象,只要数学特性相同,外部使用也相同。
(应学会定义、表示和实现抽象数据类型,对应设计软件系统很重要。)
抽象数据类型分为3类:
原子类型:原子类型的变量值不可分解,一般不常用。 例:位数为100的整数。
固定聚合类型:变量的值由确定数目的成分按某种结构组成。
可变聚合类型:构成该类型的成分的数目不确定。
多型数据类型:值的成分不确定的数据类型。 例如元素可以是整数、字符或字符串。
(此类型需要用C++之类的语言实现,本书用C语言讲解,故元素是确定的数据对象。)
抽象数据类型表示方法:
(D,S,P) D:数据对象 S:D上的关系集 P:D上的基本操作集。
所以,抽象数据类型的三要素为:数据对象,数据关系和基本操作。
定义抽象数据类型:
ADT 抽象数据类型名{
数据对象:{数据对象定义}
数据关系:{数据关系的定义}
基本操作(参数表):可通过赋值和 用“&”引用传参。
初始条件:(初始条件描述)
操作结果:(操作结果描述)
}