前言
“数据结构”是计算机学科各个专业的一门重要的专业基础课程。本课程主要讲授数据的逻辑结构、存储结构、基本运算、运算实现、算法设计、算法分析、算法评价等方面的内容,使学生对线性表、栈、队列、串、数组、树及二叉树、无向图和有向图、静态及动态查找表、文件等各种数据结构有深刻的理解,对各种常见的排序方法与算法有深入的了解。在此基础上,还要求学生系统地掌握在不同的存储结构上利用上述数据结构进行综合性算法设计的方法和技巧。因此,它是一门理论性和实践性都很强的课程。
根据作者多年的教学实践发现,学生对于数据结构的应用,特别是在做算法设计习题和编程上机实习这两个环节上都不同程度地存在着一定的困难。为了帮助学生更好地掌握该课程的知识,提高算法设计和动手编程的能力,急需为计算机学科各专业开设的“数据结构”课程编写一本基础扎实、知识面广、适应性强的教材。为此,在华南理工大学精品课程建设基金的资助下,我们编写了这本《数据结构与算法(C++语言版)》教材,主要目的就是加强基础、拓宽知识面、增强适应性,以便使学生能够更深入地理解教材内容,开拓思想,培养并掌握良好的算法设计与程序实现的技能,以及解决实际问题的能力。
本书为普通高等教育“十一五”国家级规划教材。
本书共分15章,主要内容包括:绪论、线性表、栈和队列、串、多维数组和广义表、树和二叉树、图、查找、内部排序、文件组织和外排序、贪婪算法、分而治之算法、动态规划、回溯、分枝定界法。在前10章中,对相应的数据结构的ADT描述、存储结构、基本操作、综合算法做了全面深入的阐述,每章的最后都对该章的基本内容、学习要点、具体要求、重点难点进行归纳和总结。在第11~15章中,列举了几个应用多种数据结构进行综合性算法设计的典型例子。另外,作者在参考了近年来许多的国内外教材之后,选编了大量精心设计的习题。本书每章的学习内容翔实,算法和例题典型,而且给出了对应的VC++ 6.0源程序。本书提供免费电子课件。
本书不仅可作为计算机学科各专业学生的教材,也适合作为广大工程技术人员和自学考试人员的参考书。
肖南峰教授、黄敏讲师和张芩讲师编写了第1~10章并选编了全部习题,赵洁讲师编写了第11~15章及所有的Visual C++ 6.0源程序,吕建明讲师校对了部分章节的习题。在本教材的编写过程中,华南理工大学“数据结构”精品课程课题组和“智能计算机科研团队”的多位教师提出了许多的宝贵意见,我们在此向他们表示衷心的感谢。另外,还要感谢华南理工大学精品课程建设基金的支持。由于作者水平有限,教材中难免会存在错误,因此热忱地欢迎广大读者提出批评和意见。
编者
2009年3月
于华南理工大学