前言 党 的二十大报告指出: 教育、科技、人才是全面建设社会主义现代化国家的基础性、战略性支撑。必须坚持科技是第一生产力、人才是第一资源、创新是第一动力,深入实施科教兴国战略、人才强国战略、创新驱动发展战略,这三大战略共同服务于创新型国家的建设。高等教育与经济社会发展紧密相连,对促进就业创业、助力经济社会发展、增进人民福祉具有重要意义。 “数据结构”是计算机及相关专业的一门重要的专业基础课,是介于“数学”“计算机硬件”“计算机软件”之间的一门计算机科学与技术领域的核心课程,并广泛应用于信息科学、系统工程、应用数学以及各种工程技术领域。该课程主要介绍如何合理地组织和表示数据,如何有效地存储和处理数据,如何正确地设计算法并对算法的优劣进行评价。 在数据结构教材中,对算法的描述采用C语言和C++的较多,而采用Java语言的较少。随着软件开发技术的发展,Java语言作为完全面向对象的语言,已成为当前应用开发中使用最广泛的语言之一。因此,采用Java语言描述数据结构会为Java编程人员提供更实用的参考。为了适应一些高校对数据结构Java版的需求,本书的编写应运而生。 数据结构课程的教学要求: 一方面,学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步掌握算法时间分析和空间分析的技术; 另一方面,本课程的学习过程也是复杂程序设计训练过程,要求学生编写的程序质量进一步提高。数据结构是Java语言课程学习的进一步深化,相比Java语言课程上的程序,一是程序数据处理功能复杂,二是需要学生从正确性、可读性、健壮性、时间效率和空间效率理解算法质量的概念,算法的质量对软件的最终质量有着重要的影响。 全书共9章。第1章为概论,引入数据、数据结构、抽象数据类型等基本概念; 第2~7章分别介绍线性表、栈和队列、串、数组、矩阵、广义表、树和二叉树、图等基本类型的数据结构及应用,从抽象数据类型的角度进行分析; 第8章和第9章分别介绍查找和内部排序,除了介绍各种实现方法外,着重从时间上进行定性或定量的分析。 本书的特点如下: (1) 结构合理,思路清晰。本书紧扣实现软件数据处理功能三步走的路线,即逻辑结构、存储结构、算法,帮助读者深刻理解计算机科学中的恒等式: 数据结构+算法=程序,进而理解数据结构课程在计算机科学中的核心地位。本书对各种存储结构的优缺点进行比较,引导读者根据软件的功能需求选择合适的存储结构,为开发优质软件打下坚实的理论基础。 (2) 采用Java作为数据结构和算法的描述语言。在对数据结构和算法进行描述时,尽量考虑Java语言的特色,用泛型接口描述各种抽象数据类型,用泛型类描述各种存储结构。将Java基础类库中的数据结构类介绍给读者,供读者分析比较,使其理解数据结构类型的开发者和使用者角色的区别。 (3) 有针对性的示例。在每一章讲解基础知识后,都会列举一些对应的应用问题,给出典型问题的分析和解决方案,帮助读者理解和掌握实践应用方法。 (4) 丰富的配套练习。每章除理论教学内容外,还包括练习题和实验题,帮助学生全面掌握知识点。 为便于教学,本书提供丰富的配套资源,包括教学大纲、教学课件、电子教案、程序源码、习题答案、在线作业和微课视频。 资源下载提示 数据文件: 扫描目录上方的二维码下载。 在线作业: 扫描封底的作业系统二维码,登录网站在线做题及查看答案。 微课视频: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的视频讲解二维码,可以在线学习。 本书可作为高等院校计算机及相关专业数据结构课程的教材,也可作为从事计算机应用的科技人员的参考用书,还可作为非计算机专业的学生及广大计算机爱好者的阅读参考书。读者只需要掌握Java程序设计基础便可学习本书,若具有离散数学和概率论的知识,则对书中的某些内容将更容易理解。 由于编者水平有限,书中难免存在不妥与错漏之处,敬请广大读者批评指正。 编者2023年11月