图书前言

“数据结构和算法”课程介绍常用的数据组织方法和常用算法,包括栈、队列、线性表和串等标准数据结构的使用和实现,二叉树和图等结构的表示和使用,常用的查找方法和排序方法。

本课程的教学目标包括两层:

(1) 熟悉常用的数据结构和算法,以便在软件开发中选择合适的现成工具;

(2) 掌握有效组织数据和处理数据的方法和技能,设计高质量的程序。

笔者认为,达到这两层目标的主要手段是动手多编程序。为此,本书提供了大量的程序设计例题和习题,既包括标准数据结构和算法的简单应用和实现,也包括典型的实用程序设计,如银行排队系统的模拟、基于Hu.man算法的压缩、地铁换乘查询系统等。希望读者通过阅读例题和完成练习达到课程目标。

调查也发现,学生编程序时,在一个程序调试上花的时间越长,学生越容易对编写程序失去信心。为此,本书在如何激励学生多编程序,并且编高质量程序上做了一些尝试,也是本书的特色所在:

本书提供的程序设计练习大多提供了目前流行的在线测评,读者在完成程序后可以

. 提交到在线测评系统检查程序是否通过测试,见http://www.teaching.sist.sysu.edu.cn/course/DataStructure/。本书设计了一些软装置,这些软装置具有简单、友好的界面,读者只需填写一个函数

. 便可以通过运行软装置观察程序运行效果,或测试程序能否通过软装置设计的测试数据。这里的软装置可以类比于物理或化学实验室的实验装置。软装置的下载和使用见http://www.teaching.sist.sysu.edu.cn/course/DataStructure/。本书程序设计练习设计的一个原则是循序渐进。例如,在学习实现一个数据结构时

. 要求学生一次只实现一个方法,其他方法由软装置或在线测评系统完成。这样使得每个程序都比较容易调试和通过,给学生编程带来一定的信心。本书每个章节中都包含了相关的程序设计练习,并没有将所有练习集中编排在每章

. 的最后面,希望这样能够更好地体现“通过动手编程序学习程序设计”的原则。

本书第1~ 第5、第7章由乔海燕编写,第6和第9章由蒋爱军和乔海燕编写,第8章由高集荣和乔海燕编写。刘晓铭编写和设计了部分在线测试题目。李清洋设计了部分软装置。

王若梅教授和郭嵩山教授对本书的编写给予大力支持和鼓励,在此表示衷心感谢!本书在编写过程中参考了诸多同行的文章和著作(见参考文献),在此一并致谢。由于编者的知识水平有限,书中难免有不足和错误之处,恳请专家和读者批评指正。

编者

2012 年6 月