图书前言

关于数据结构的书已经很多,但是有些问题始终没有解决,即学习数据结构应该具备哪些预备知识?是否一定要学习PASCAL语言或C语言后才能学习数据结构?在学习数据结构前是否一定要有一些离散数学或集合论方面的基本概念与知识?学习本书所介绍的数据结构,这些预备知识都可以不要。本书的起点很低,适用的读者面很广。书中对每一种常用的数据结构都没有从抽象的定义出发,也没有涉及到基本理论与计算机的专业知识。在介绍一种数据结构时,总是从实例出发,通过对实例的分析、讲解来介绍数据结构的基本概念,总结出每一种数据结构的特点及其应用。当然,为了更有效地学习数据结构,读者应已经初步学会了一种程序设计语言,但并不局限于PASCAL语言或C语言。在本书中,使用一种最简单的描述语言来描述对数据结构的运算,同时为了方便学过C语言的读者,对每一个算法也都给出了C语言的描述。如果读者没有学过C语言,可以不看C语言的描述,也可以通过阅读用C语言描述的算法顺便学习C语言。

    本书强调实用性。书中所有的算法都用C语言编程调试通过。

    全书共分9章。

    第1章从两个实例入手,介绍了数据结构的基本概念,讨论了算法方面的考虑,并给出了本书主要使用的一种算法描述语言。

    第2章介绍了一般的线性表、栈、队列等最基本的数据结构,并讨论了这些在顺序存储结构下的主要运算,介绍了栈与队列的主要应用;最后还讨论了字符串匹配的问题。

    第3章介绍了线性表的链式存储结构及其运算,并主要讨论了线性链表在多项式运算中的应用。

    第4章讨论了数组的顺序存储结构、规则矩阵的压缩以及稀疏矩阵的三列二维数组表示与十字链表表示。

    第5章介绍了树与二叉树的基本概念,主要讨论了二叉树的性质、二叉树的存储结构及其二叉树的遍历,最后还介绍了穿线二叉树的概念、表达式线性化的过程、最优二叉树用于编码等问题。

    第6章简要介绍了图的基本概念、图的存储方式、图的两种主要遍历方法,最后讨论了最短距离问题的求解。

    第7章介绍了工程中常用的查找方法,包括顺序查找、对分查找、分块查找、二叉排序树查找以及多层索引树查找等。

    第8章介绍了Hash表的基本概念,重点介绍了几种常用的Hash表。

    第9章介绍了各种排序的方法,求解了拓扑分类的问题。

由于时间紧迫与水平有限,书中难免有错误或不妥之处,恳请读者批评指正。