前言 “数据结构”是计算机相关专业的核心主干基础课程,它是一门实践性较强而理论知识较为抽象的课程,其重点和难点在于让学生理解和掌握算法的设计与分析,使学生具有较好的数据抽象能力、算法设计能力和创新思维能力,对学生来说学习难度较大。 本书注重理论与实践的结合,采用循序渐进的方法进行讲解,主要特点如下。 (1) 本书为一体化教程,融合了基础知识讲解、基础知识测试、实验、实验拓展和课程设计等内容。知识讲解和上机实验部分(第1~6章)首先给出知识导图,使学习者对本章内容有一定的了解和认识。然后从基本概念入手,逐步介绍其特点和基本操作的实现、主要算法的基本思想和实现步骤,接着通过实例进一步讲述如何应用,最后通过上机实验使学习者理解和掌握相关的原理和方法。 (2) 精简内容、强化基础。本书遵循“有用、够用、实用”的基本原则,重点放在基础知识的介绍,且语言言简意赅,剔除了部分难度较大的内容。 (3) 本书采用了以Java语言为主、C++为辅的描述形式。目前,Java和C++语言是比较流行的面向对象的程序设计语言。Java是一种完全面向对象的程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性,得到了广泛的应用。而C++通常适合那些需要“硬件级”操作的软件。两者之间的最大区别在于,C++更接近机器语言,因此其软件运行速度更快且能够直接与计算机内存、磁盘、CPU或者其他设备进行协作。本书对于算法的描述语言以Java为主,C++为辅,即对于各种数据结构的抽象数据类型描述采用Java接口实现,对于基本操作和主要算法均给出了Java源代码和C++源代码。 全书可概括为两部分。 第一部分包括知识讲解和上机实验,共6章: 第1章为概述,介绍了Java和C++编译环境、数据结构的基本概念、算法的基本概念和抽象数据类型。第2章为线性表结构;第3章为树结构;第4章为图结构;这三章介绍了各大结构的特点、基本操作、抽象数据类型和主要操作的算法实现,并融合了各结构中涉及的查找算法。第5章为排序算法,主要介绍了四大类型的排序算法的原理、步骤和算法实现。第6章为串与数组,主要介绍串、数组和矩阵结构的特点和应用。 第二部分为课程设计,共5章,主要是三大结构的综合应用,选取了九大问题,包括约瑟夫环、图书管理、迷宫、停车管理、排队就餐、哈夫曼编码、英文文本对比、校园地图和校园超市选址。通过课程设计提高学习者应用所学的原理和方法解决实际问题的能力。 本书由广东交通职业技术学院赖小平和庄越进行策划与审核,并与广东理工学院向志华、李清霞共同完成书稿的编写工作,第1、2、4、6章由赖小平编写,第3章由庄越编写,第5章由李清霞编写,第7、8、9、10、11章为课程设计部分,由向志华编写。 由于编者水平有限,书中难免有不足之处,恳请广大师生读者批评、指正。 编者2020年12月