数据结构是计算机软件相关专业的核心课程之一,主要讲授数据结构和算法的原理、方法和技术。从研究对象来说,包括向量、链表、矩阵、堆栈、队列、串、树和图等;从常用算法来说,包括查找和排序等。通过本书的学习,读者可以熟悉c++开发技术,特别是面向对象的程序设计;掌握算法设计和数据结构设计的基本方法;掌握如何评价、选择和使用各种库函数所实现的算法;理解并学会使用STL。可作为高职高专院校计算机软件专业教材,也可作为计算机软件专业本科学生的参考书,对于从事计算机软件开发的技术人员也有一定参考价值。
数据结构与算法是软件开发的核心技术之一,它是研究各种数据结构的特点、存储结构及相关算法的学科。随着计算机科学的快速发展,数据结构不断发展,并且越来越与计算机编程紧密结合,贯穿程序设计的始终。计算机专家曾将程序定义为“程序=数据结构+算法”,这也说明了数据结构和算法的重要性。
大学中开设的数据结构课程由于理论性较强,往往令学生望而生畏。本书的编写思路是尽量降低学生学习该课程的难度,为此引入了我们多年进行数据结构课程教学改革与试验的成果,围绕软件人才的培养目标,根据企业需求与教学规律进行了课程的整合,以就业岗位的要求设计课程内容,强调软件系统开发实用技术的教学,注重对学生工程化能力的培养,提高学生的软件开发能力。
本书使用C++标准中新增加的标准模板库(Standard Template Library,STL)来直观地讲述算法分析、通用容器类和常用算法,介绍的算法可以直接应用到软件开发实践中,极大地提高软件系统的规范性和开发效率。通过使用模板,C++推迟对类型的选择,允许程序员针对不同的类型提取出一般化的代码,相对于传统的、由函数及类组成的库来说,模板库可以提供更好的代码重用机会,所以它被国际标准化组织添加到C++标准中。本书一方面采用c++语言描述数据结构和算法,简洁地讲解数据结构的c++表示、算法的基本思想;另一方面讲述STL的容器与算法以及常用的通用算法,力求在基本知识与STL描述之间取得平衡,做到描述直观和易于理解。另外,本书还具有以下特色。
(1)第l章给出了c++基本特征和面向对象的程序设计的基础知识。
(2)每章的算法从问题分析出发,着重讲解解决问题的思路、程序设计的要点,并尽量给出直观的图示。
(3)每章都利用介绍的各种算法编写相应的C++类,并放在指定的头文件中。
(4)每章利用输入类明确地给出调用算法的输入数据。
(5)根据讲述内容的展开,系统介绍STL的基本概念、容器、迭代器和通用算法。
(6)每章都包含丰富的例题,供学生程序设计参考。
(7)每章都配备适当的习题,供学生复习基本知识和按指定要求编写C++程序。
本书为高职高专计算机软件专业教材,讲授学时为70学时左右,对其他专业(如计算机应用专业),可以根据专业特点和学生的实际情况做适当取舍。容器类算法及标准模板库通用算法的实践性很强,上机实验是必不可少的教学环节。因此,必须安排适量的上机实践,建议其学时数不少于讲授学时的l/4。
参与本书编写的主要有张晓蕾、张斐慕、陈炜、朱立、万忠、苏飞、杨旭、魏洪涛、马世珍等,在大纲编写、教材审定以及在试用的过程中,有关教授、专家和软件公司提出了许多宝贵的意见,在此一并感谢。
要编写好一本教材是不容易的,要编写好一本从基本知识到STL的数据结构教材更不容易。受作者水平所限,本书难免有不少缺点和不足,希望得到专家、计算机同行和广大读者的批评指正。
编者
2005.4