前言 数据结构是计算机学科本科教学计划的核心课程,对学生基本的计算机问题求解能力的培养具有重要意义。 作为一门必修课程,数据结构既是对以往课程的深入和拓展,也是为将来更加深入地学习其他专业课程打下基础。课程中所学习的线性表、栈、队列、二叉树等数据结构以及排序和查找算法是操作系统、编译原理、数据库、计算机网络等后续课程的基础。 数据结构适合在大学二年级开设,学生应该先修计算机导论、Java程序设计和离散数学。 本书主要内容 参考教育部高等学校计算机科学与技术教学指导委员会编制的高等学校计算机科学与技术专业核心课程教学实施方案中的建议,全书分为三篇,共有10章。 基础篇包括第1~3章。第1章为Java语言回顾,内容包括类、接口、异常处理和常用的异常类、泛型、数组和引用类型的转型。第2章为算法与算法分析,内容包括算法、算法分析和程序性能测量。第3章为数据结构,内容包括数据结构的基本概念、数据结构的描述、抽象数据类型及实现。 数据结构篇包括第4~6章。第4章为线性表,内容包括线性表的基本概念、线性表的数组描述、线性表的链式描述、数组描述和链式描述的比较。第5章为栈与队列,内容包括栈、队列、双端队列。第6章为树与二叉树,内容包括树、二叉树、二叉树的性质、二叉树的实现、二叉树的常用操作、树的遍历和树的描述。 综合运用篇包括第7~10章。第7章为查找,内容包括基本概念、静态查找、动态查找、二叉搜索树、AVL树、红黑树、B树、哈希表。第8章为优先级队列,内容包括基本概念、堆、优先级队列的实现、最优二叉树、偶堆。第9章为排序,内容包括基本概念、直接插入排序、快速排序、堆排序、归并排序、基数排序、计数排序。第10章为图,内容包括图的基本概念、图的描述、图的实现、图的搜索与应用、最短路径、最小生成树、图的其他描述。 本书特色 (1) 注重理论,突出重点。 本书详细介绍了线性表和二叉树等内容,通过大量的图示、例题和代码讲解,突出了链式描述和递归的教学,同时在内容方面兼顾知识的系统性。 (2) 强调实现,联系实际。 本书强调数据结构的实现,借鉴了Java类库的代码风格,有助于读者养成良好的编程习惯。本书将线性表、栈、队列和二叉树的应用融合到查找、排序、图等具体问题中,为重要的知识点配备了丰富的习题和代码。 (3) 风格简洁,使用方便。 本书风格简洁,对一些概念进行了梳理,对于非重点的内容不做过多论述,以便读者在学习过程中明确内容之间的逻辑关系,更好地掌握数据结构的内容。 配套资源 为便于教与学,本书配有源代码、教学课件、教学大纲、教学进度表、习题题库和实验指导书。 (1) 获取源代码的方式: 先刮开并用手机版微信App扫描本书封底的文泉云盘防盗码,授权后再扫描下方的二维码,即可获取。 源代码 (2) 其他配套资源可以扫描本书封底的“书圈”二维码,关注后回复本书书号,即可下载。 读者对象 本书主要面向广大从事信息技术的专业人员、从事高等教育的专任教师、高等学校的在读学生及相关领域的广大科研人员。 在本书的编写过程中,作者参考了诸多相关资料,在此对相关资料的作者表示衷心的感谢。 限于作者水平和时间仓促,书中难免存在疏漏之处,欢迎广大读者批评指正。 作者 2023年4月