图书前言

本书(下册)内容是在上册已经包含了C++基础,模拟的C++新标准中的Vector、List、String等数据结构线性部分,通用算法和迭代器内容的基础上组织的,主要讨论数据结构非线性部分,共9章,从第26~第34章,涵盖了二叉树、堆、树、图、二叉搜索树、平衡二叉搜索树、B树、散列和排序,并利用C++实现了全部算法。这是与第2版教材的主要区别。

本书将一些经典的算法纳入相应的经典结构中进行描述。例如,快速排序和幂集归入二叉树前序遍历,汉诺塔问题并入二叉树中序遍历,哈夫曼树是堆类的直接应用,八皇后和迷宫分别在树和图的深度优先遍历中解决。本书中的算法描述清晰紧凑,代码简洁流畅,既保留了第2版的特点,又因为改用C++语言描述而有所不同。

图1 多媒体软件示例算法性能分析历来是学习数据结构的难点之一,本书将它放在了最后一章,和排序算法一起讨论,使读者可以首先集中精力熟悉和理解各种算法设计和代码实现,然后在充分的感性认识基础上,以综合提高的姿态,以排序为典型内容,学习和掌握算法的时间和空间复杂度分析技术。这是第2版教材没有的内容。

本书的图类综合了Vector、List、适配器、堆方法和C++文件读写方法等多项内容,增强了教材内容的连贯性和整体性。

和上册一样,本书配备了多媒体课件(如图1所示),既可助教又可助学,使复杂和抽象的算法变得直观而简单,尤其对平衡二叉树、图的最短路径、单元最短路径等难度很大的算法,效果更加明显,对初学者更是意义非凡。

本书的源代码和课件可以从精品课网站上直接下载,网址:http://59.67.71.237:8080/dsc. 

读者如有问题或发现错误,欢迎直接与作者联系,作者将不胜感激。

王立柱2009年3月