第1章 绪论
为了编写出一个“好”的程序,必须分析待处理的对象的特性及各处理对象之间的关系。这就是“数据结构”这门学科形成和发展的背景。
1.1 什么是数据结构
一般来说,用计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序,进行测试、调整直至得到最终解答。
寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。
简单来说,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
1.2 基本概念和术语
数据(data) 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(data element) 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 有时,一个数据元素可由若干个 数据项(data item) 组成。例如,一本书的书目信息为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个数据项。数据项是数据的不可分割的最小单位。
数据对象(data object) 数据对象是性质相同的数据元素的集合,是数据的一个子集。 例如,整数数据对象是集合 N = {0,± 1,± 2,……},字母字符数据对象是集合 C = {’ A ’ , ’ B ’ , ’ C ',…… ’ Z ’ } 。
数据结构(data structure)数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在某种关系,这种数据元素相互之间的关系称为结构(structure)。根据数据元素之间关系的不同特性,通常有下列4类基本结构:(1)集合 :结构中的数据结构之间除了“同属于一个集合”的关系外,别无其他关系;(2)线性结构 :结构中的数据元素之间存在一个对一个的关系;(3)树形结构:结构中的数据元素之间存在一个对多个的关系;(4)图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系。
图1.5为上述4类基本结构的关系图。
由于“集合”是数据元素之间关系极为松散的一种结构,因此也可用其他结构来表示它。
数据结构的形式定义为:数据结构是一个二元组
Data_Structure=(D,S) (1-1)
其中:D是数据元素的有限集,S是D上关系的有限集。
下面举两个简单例子说明之。
例1-4
在计算机科学中,复数可取如下定义:复数是一种数据结构
Complex=(C,R) (1-2)
其中:C是含两个实数的集合{c1,c2} ;R={P},而P是定义在集合C上的一种关系{<c1,c2>},其中有序偶<c1,c2>表示c1是复数的实部,c2是复数的虚部。
结构定义中的“关系”描述的是数据元素之间的逻辑关系,因此又称为数据的逻辑结构。