一方面,从计算机软件理论角度看,程序设计=数据结构+算法;另一方面,从软件工程生命周期方法学的角度来看,算法设计是详细设计阶段的根本任务,程序设计是代码编写阶段的根本任务。无论从哪个角度分析,都突显出“数据结构”在计算机科学中的核心地位。“数据结构”不仅是计算机学科的核心课程,而且是高等院校很多专业必修的课程。也是许多高等院校计算机专业研究生入学考试的必考科目之一。
然而,由于“数据结构”既具有极强的理论性,又具有极强的实践性,给读者的学习带来极大的困难。大多数读者刚刚学习完“程序设计”课程,马上就要在“数据结构”中面临比较复杂的程序设计,无形中会在心理上对“数据结构”有种恐惧感。另一方面,数据结构把程序设计、算法设计等交织在一起,而后者本身又分别是两门比较独立的专业学科,这就更增添了问题的复杂性,使得很多读者摸不着头绪,不知所措。尤其是算法设计与分析本身比较抽象,还需要读者具有一定专业知识和实际经验的积累,使得不少读者感到难度很大。
针对上述问题,本教材应运而生,它主要有以下特色:
(1)沿着“一个**、两条主线”展开全书。“一个**”就是以“数据结构”为**,“两条主线”是指同一种数据结构分别沿着顺序和链式两种存储结构探讨算法。
(2)把算法与程序实现相分离。只要完成算法设计,至于用什么编程工具实现算法已经不是问题的关键了。
(3)竭力突破难点。算法设计是真正的难点所在,本教材列举大量实例,深入浅出,给出详细的操作过程,手把手帮助读者突破难点。
(4)把**放到数据结构的应用上。唯有如此,才能突出算法、算法分析、程序设计等众多学科之间的联系,才能理解数据结构的地位和作用,才能引导读者学会根据问题需要设计恰当的数据结构。
(5)把计算机学科*新研究的成果引入到教材中,让读者从崭新的背景中了解相关知识点,感到技术发展的崭新气息和强烈挑战。
另外,本教材采用的总体编写思路和组织风格是:问题提出→问题抽象→算法思想→算法描述→算法实现→实例分析→算法分析,但考虑到篇幅所限,不同章节又有所差别。在适当的技术背景下有针对性地提出问题,有利于激发读者的学习动机和学习兴趣;从问题中抽象出一般性(数学)模型,并用规范的形式进行问题描述,是计算机科学中研究问题的一个重要环节;算法思想主要分析算法的核心思路,突出算法的创新点和关键点,有利于读者探究问题的突破口;算法描述要求用专业规���的形式完整地描述解决问题模型的步骤;算法实现为读者把算法转变为程序代码的基本过程进行示范,虽然教材中不少地方省略了这个环节,但对于计算机开发人员来说,这是一项基本功;实例分析主要示意算法对某具体输入的一个执行过程,检验算法的正确性和可行性,同时有利于读者加深对算法基本思想的理解;算法分析主要分析算法的时间开销。