图书前言

    数据结构是计算机学科的必修课程,涵盖了计算机学科的算法设计、数值分析、操作系统和编译原理等课程涉及的大部分相关算法的实现。学好该课程,不仅对这些后续课程的学习有很大帮助,而且在实际中有广泛的用途。

    计算机是进行数据处理的工具。数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现。它不仅为用计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧。

    本教程是作者针对数据结构课程概念多、算法灵活和抽象性强等特点,在总结长期教学经验的基础上编写的。全书分为14章,第1章为“绪论”,介绍数据结构的基本概念,特别强调算法分析的方法;第2章为“线性表”,介绍线性表的两种存储结构(即顺序表和链表)的逻辑结构与基本运算的实现过程;第3章为“栈和队列”,介绍这两种特殊的线性结构的概念与应用;第4章为“串”,介绍串的概念与模式匹配算法;第5章为“数组和稀疏矩阵”,介绍多维数组和稀疏矩阵的概念与相关运算的实现过程;第6章为“递归”,较深入地讨论了计算机学科中的递归设计方法,以及将递归算法转化为非递归算法的一般过程;第7章为“树和二叉树”,介绍树和二叉树的概念与各种运算的实现过程,其中特别突出二叉树的各种递归算法方法;第8章为“广义表”,介绍广义表的存储结构和相关算法的实现过程;第9章为“图”,介绍图的概念和图的各种运算算法的实现过程;第10章为“查找”,介绍各种查找算法的实现过程;第11章为“内排序”,介绍各种内排序算法的实现过程;第12章为“外排序”,介绍各种外排序算法的实现过程;第13章为“文件”,介绍各类文件的组织结构。第14章为“采用面向对象的方法描述算法”,介绍面向对象的概念和用C++描述数据结构算法的方法。

    数据结构是一门应用性非常强的课程,学生在掌握各种数据结构特别是存储结构的基础上,一定要尽可能多地上机实习,通过较多的实验把难以理解的抽象概念转化为实实在在的计算机能够正确运行的程序,这样才能将所学知识和实际应用结合起来,吸取算法的设计思想和精髓,提高运用这些知识解决实际问题的能力。因此,本教程突出上机实习内容,除最后一章外其余各章都给出大量的上机实验题,供教师和学生选用。另外,书后给出了三个附录。附录A为综合实验题,目的是全面考查学生综合运用数据结构知识的能力,一般在本课程学习末期或者在专门的数据结构集中实习课(通常为36课时)中向学生布置。附录B为学生提交的实验报告的格式。附录C给出书中部分算法对应的源程序,读者可以从http://www.tup.com.cn网站免费下载。

    为了便于学习和上机实验,我们还编写了与本教程配套的《数据结构教程学习指导》和《数据结构教程上机实验指导》两本书,构成一个完整的教学系列。本系列中所有程序均在Visual C++ 6.0环境下调试通过。

    本教程和相关学习指导的编写得到武汉大学教务部“数据结构综合教学改革”教学项目的支持,是本课程组许多教师多年来在数据结构课程教学研究和教学改革中的经验与成果的结晶。特别得到何炎祥、黄竟伟、黄水松和薛超英等多位教授和博士生导师的大力帮助。作者在此表示衷心感谢。

    本书在第1版的基础上,对多个算法进行了优化,增加了线段树、并查集、2-3-4树和红黑树的相关内容。由于水平所限,尽管编者不遗余力,仍可能存在错误和不足之处,敬请教师和同学们批评指正。作者的联系信箱为:licb1964@126.com。

编  者

2006年9月30日