前言

党的二十大报告中指出: 教育、科技、人才是全面建设社会主义现代化国家的基础性、战略性支撑。必须坚持科技是第一生产力、人才是第一资源、创新是第一动力,深入实施科教兴国战略、人才强国战略、创新驱动发展战略,这三大战略共同服务于创新型国家的建设。高等教育与经济社会发展紧密相连,对促进就业创业、助力经济社会发展、增进人民福祉具有重要意义。

数据结构是一门实践性很强的课程,是今后学习其他专业课程和从事软件开发的重要基础。对于初学者来说,数据结构中的概念比较抽象,需要结合生活实际进行理解。学习数据结构不只是要理解并掌握各种数据类型所涉及的相关算法思想,更重要的是要将这些算法思想用Java、C或Python等语言实现,只有这样才能真正理解并掌握数据结构。因此,学习数据结构需要至少掌握一门高级程序语言。

Java语言不仅具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性等众多特点,而且吸收了C++语言的各种优点,同时摒弃了C++中难以理解的多继承、指针等概念,极好地实现了面向对象理论。Java语言允许程序员以优雅的思维方式进行复杂的编程,是编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等的首选开发语言。国内各高校均开设了Java语言程序设计课程,因此本书采用Java语言作为描述语言,为读者今后从事软件开发打下牢固的基础。

本书较为系统地介绍了数据结构中的线性结构、树结构、图结构及查找、排序技术,阐述了各种数据结构的逻辑关系,讨论了它们在计算机中的存储表示及运算。本书以潜移默化的形式融入思政元素,理论与实践并重,除了对数据结构中的抽象概念和数据类型的基本运算进行详细讲解外,还通过丰富的图表、实例和完整的代码讲解算法的应用,帮助读者理解各种数据类型常见的基本操作及具体应用案例的算法思想。本书精选了一些涵盖知识点丰富且具有代表性的案例,并挑选了部分历年考研试题作为课后习题,所有算法均采用Java语言给出完整实现,方便读者学习和理解,进而巩固所学知识点。

本书共分为8章,分别为数据结构基础,线性表,栈与队列,串、数组与广义表,树和二叉树,图,查找和排序。

第1章: 主要介绍数据结构的基本概念和对算法的描述方法,以及本书的学习目标、学习方法和学习内容。

第2章: 主要介绍线性表。首先讲解线性表的逻辑结构,然后介绍线性表的各种常用存储结构,每节均给出了算法的具体应用。通过学习这一章,读者可以掌握顺序表、动态链表的基本操作及应用。

第3章: 主要介绍操作受限的线性表——栈和队列,内容包括栈的定义,栈的基本操作,栈与递归的转化,队列的概念,顺序队列和链式队列的运算。


第4章: 主要介绍串、数组与广义表。串是另一种特殊的线性表,数组和队列可以看作是线性表的推广。首先介绍串的概念、串的各种存储表示和串的模式匹配算法,然后介绍数组的概念、数组(矩阵)的存储结构及运算、特殊矩阵,最后介绍广义表的概念、表示与存储方式。

第5章: 主要介绍非线性数据结构——树和二叉树。首先介绍树和二叉树的概念,然后介绍树和二叉树的存储表示、二叉树的性质、二叉树的遍历和线索化、树和森林与二叉树的转换、并查集及哈夫曼树。

第6章: 主要介绍非线性数据结构——图。首先介绍图的概念和存储结构,然后介绍图的遍历、最小生成树、拓扑排序、关键路径及最短路径。

第7章: 主要介绍数据结构的常用技术——查找。首先介绍查找的概念,然后结合具体实例介绍了静态查找、二叉排序树、平衡二叉树、红黑树、B-树和B+树、哈希表,并给出了完整程序。

第8章: 主要介绍数据结构的常用技术——排序。首先介绍排序的相关概念,然后介绍各种排序技术,并给出了具体实现算法。

本书教学内容紧紧围绕《高等学校计算机专业核心课程教学实施方案》和《计算机学科硕士研究生入学考试大纲》,涵盖教学方案和考研大纲要求的全部知识点。本书系作者多年教学实践经验总结,主要特点如下:

(1) 结构清晰,内容全面。针对抽象的概念和知识点,配合类比和丰富的图表进行讲解。

(2) 例题典型、丰富。例题选取自全国著名高校考研试题和竞赛试题,给出了详细的分析和完整算法实现。

(3) 理论与实践并重,突出实践。在讲解抽象概念和算法思想时,每个算法都给出了具体的Java语言实现,每章均提供了综合案例算法的详细讲解。

为便于教学,本书提供丰富的配套资源,包括教学大纲、教学课件、电子教案、程序源码、习题答案、在线作业和微课视频。


资源下载提示


数据文件等资源: 扫描目录上方的二维码下载。

在线作业: 扫描封底的作业系统二维码,登录网站在线做题及查看答案。

数据结构(Java语言实现·题库·微课视频版)
前言


微课视频: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的视频讲解二维码,可以在线学习。





本书由陈锐、马军霞、蔡增玉、马欢、朱亮、赵晓君、李朝阳、蒋昌猛、王超共同编著,感谢郑州轻工业大学全体同仁在工作上的帮助及在写作上的关心与支持。

在此尤其感谢清华大学出版社的魏江江编辑,他十分看重本书的应用价值,在他的策划下,本书才得以顺利出版,对此深怀感激。葛鹏程编辑为本书的出版付出了巨大努力,在此一并表示衷心的感谢。

在本书的编写过程中,参阅了大量相关教材、著作,个别案例也参考了网络资源,在此向各位原著者致敬!

由于编写时间仓促,加之水平所限,书中难免存在一些不足之处,恳请读者不吝赐教。


编者2023年7月