本书从数据类型的角度,分别讨论了4大类型的数据结构的逻辑特性、存储表示及其应用。为了便于读者理解,书中对数据结构众多知识点的来龙去脉都做了详细的解释和说明,并配有大量的算法实例穿插其间;书的最后还专门辟出一章,用来讲解数据结构在解决实际问题中的应用示例,便于举一反三。本书的第1章综述数据、数据结构和抽象数据类型等基本概念和算法;第2章、第4至7章从数据类型的角度,分别讨论线性表、栈和队列、串和数组、二叉树和树以及图和广义表等数据结构的逻辑特性、存储表示及其应用;第3章和第8章分别讨论排序和查找表的各种实现方法,其中除介绍各种实现方法外,并着重对算法的时间效率做了定性的分析,对算法的应用场合及适用范围进行了比较和介绍;第9章讨论常用的文件结构;第10章以8个数据结构的综合应用为例,阐述以抽象数据类型为中心的程序设计方法,这一章的内容相当于“数据结构学习指导”,本意是为学生提供一个“综合利用数据结构知识编制小型软件”的规范示例。书的每一章都配有适量的习题,供读者复习提高之用。教授学时可为40至60,另外应留有一定的时间供学生完成适量的上机作业。本书在编排方面注意了数据结构本身的内在联系和从易到难的学习规律。例如,将排序安排在第3章,因为对读者来说,排序的内容比较容易理解,而且所涉及的数据结构主要是线性结构;又如对栈和队列的学习重点应是它们的应用,因此在第4章里更多地列举了栈和队列的应用例子;在第5章中,结合C语言的串类型讲解串结构的知识内容,以使实际和理论在应用中和谐统一起来,等等。又如为了降低理解难度,尽管广义表属线性结构,但由于它的“递归”特性,使得涉及广义表操作的算法和树更相似,因此将它放在图之后进行讨论。全书采用了类C语言作为数据结构和操作算法的描述工具,它是C语言的一个精选子集,同时又采用了C++对C的非面向对象的增强功能。例如动态分配和释放顺序存储结构的空间;利用引用参数传递运算的结果;使用缺省参数以简化函数参数表的描述,等等。这些措施使数据类型的定义和数据结构相关操作算法的描述更加简明清晰、可读性更好,转变成C程序也极方便。另一方面又可把类型定义和操作算法稍加技术处理,就很容易将其封装成类,并进一步转化成面向对象的程序模型。从课程性质上讲,“数据结构”是一门专业技术基础课。它的教学要求应当是:学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。另一方面,要求学生会书写符合软件工程规范的文件,编写的程序代码应结构清晰、正确易读,能上机调试并排除错误。数据结构比高级程序设计语言课有着更高的要求,它重在培养学生的数据抽象能力。在学习本书时应至少掌握一门高级程序设计的知识,如掌握的是C语言则最为理想;若能具有初步的离散数学和概率论的知识,对书中某些内容的理解会更容易。学习本书的同时还可把《数据结构》(C语言版)作为配套参考用书。与本书配套的还有一张软盘。本书内容丰富,概念阐述细致清楚,除可作为普通高等院校计算机类专业的教材之外,还可作为信息类相关专业“数据结构”或“软件基础”课程的本科教材。对于计算机类专业的学生或从事计算机工程与应用工作的科技工作者,本书也是一本实用的参考手册。