前言
“数据结构”课程是计算机、电子信息类及相关专业的专业基础。它在整个课程体系中处于承上启下的核心地位: 一方面扩展和深化在离散数学、程序设计语言等课程学到的基本技术和方法; 另一方面为进一步学习操作系统、编译原理、数据库等专业知识奠定坚实的理论与实践基础。本课程在教给学生数据结构设计和算法设计的同时,培养学生的抽象思维能力、逻辑推理能力和形式化思维方法,增强分析问题、解决问题和总结问题的能力,更重要的是培养专业兴趣,树立创新意识。本书在内容选取上符合人才培养目标的要求及教学规律和认知规律,在组织编排上体现“先理论、后应用、理论与应用相结合”的原则,并兼顾学科的广度和深度,力求适用面广泛。
全书共分11章。第1章综述数据、数据结构和抽象数据类型等基本概念及算法描述与分析方法; 第2~7章主要从抽象数据类型的角度分别讨论线性表、栈和队列、串、数组和广义表、树和二叉树、图等基本类型的数据结构及其应用; 第8章和第9章讨论查找和排序的各种方法,着重从时间性能、应用场合及使用范围方面进行分析和比较; 第10章主要介绍顺序文件、索引文件、索引顺序文件、哈希文件、多关键字文件的基本操作方法; 第11章介绍数据结构课程实验的目的、步骤及内容。本书对数据结构众多知识点的来龙去脉做了详细解释和说明; 每章后面配有难度各异的适量习题,并在附录中给出习题的参考答案,供读者理解知识及复习提高之用。随书配备电子教案,以及第11章实验的源代码。
全书采用类C语言描述数据结构和操作算法。类C语言是C语言的一个精选子集,同时又采用了C++对C非面向对象的增强功能,使本书对各种抽象数据类型的定义和与数据结构相关的操作算法的描述更加简明清晰,可读性更好,既不拘泥于C语言的细节,又容易转换成能够上机执行的C程序或C++程序。
从课程性质上讲,“数据结构”是高等院校计算机科学、电子信息科学及相关专业考试计划中的一门专业基础课; 其教学要求是学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时空分析技术。从课程学习上讲,“数据结构”的学习是复杂程序设计的训练过程; 其教学目的是着眼于原理与应用的结合,在深化理解和灵活掌握教学内容的基础上,学会把知识用于解决实际问题,书写出符合软件工程规范的文件,编写出结构清晰及正确易读的程序代码。可以说,“数据结构”比“高级程序设计语言”等课程有着更高的要求,它更注重培养学生分析抽象数据的能力。
在本书的构思与编写过程中,得到了孙一林、邱李华等多位教授,以及多位研究生的帮助,在此表示感谢。本书可作为计算机类专业和电子信息类相关专业的本科或专科教材,也可供从事计算机工程与应用工作的科技工作者参考。本书结构严谨、层次清楚、概念准确、深入浅出、通俗易懂、便于自学。
由于编者水平有限,书中不当之处敬请读者提出批评和建议。订购本书作为教材的教师可联系编者获取第11章实验的源代码(见清华大学出版社官方网站本书页面)。
编者2019年8月