第一章——数据结构之绪论
1.1 什么是数据结构
1.2 基本概念和术语
1.3 抽象数据类型的表示与实现
1.4 算法和算法分析
1.4.1 算法
1.4.2 算法设计的要求
1.4.3 算法效率的度量
1.4.4 算法的存储
1.1 什么是数据结构
一般来说,用计算机解决一个具体的问题时,大致需要经过下列几个步骤:
1.首先要从具体问题抽象出一个适当的数学模型
2.然后设计一个解此数学模型的算法
3.最后编出程序,进行测试,调整直至得到最终解答
寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。
1968年美国唐·欧·克努特教授开创了“数据结构”的最初体系,他所著的《计算机设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。从20世纪60年代末到70年代初,出现了大型程序,软件也相对独立,结构程序设计成为程序设计方法学的主要内容,人们就越来越重视“数据结构”,认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。
数据结构+算法=程序
1.2 基本概念和术语
数据(data)是对客观事物的符号的总称。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称(信息的载体)。它是计算机程序加工的“原料”。例如,一个利用数值分析方法解代数方程的程序,其处理对象是整数和实数;一个编译程序或文字处理程序的处理对象是字符串。因此,对计算机科学而言,数据的含义极为广泛,如图像、声音等都是可以通过编码而归之于数据的范畴。
数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项(data item)组成,例如,一本书的书目信息为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个数据项。数据项是数据不可分割的最小单位(具有独立含义)。
数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集。例如,整数数据对象是集合N={0,±1,±2,...},字母字符数据对象是集合C={‘A’,‘B’,...,'Z'}。
数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是孤立存在的,而是在他们之间存在着某种关系,这种数据元素相互之间的关系称为结构(structure)。根据数据元素之间关系的不同特性,通常有下列4类基本结构:
(1)集合 结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系;
(2)线性结构 结构中的数据元素之间存在一个对一个的关系;(元素间的关系是1:1)
(3)树形结构 结构中数据元素之间存在一个对多个的关系;
(4)图状结构或网状结构 结构中数据元素之间存在多个对多个的关系。
数据结构的形式定义为:数据结构是一个二元组
Data_Structure=(D,S)
其中,D是数据元素的有限集,S是D上关系的有限集。(D是数据对象,S是该对象中各数据元素之间的关系的有限集)