前言

信息社会让计算无所不在。所谓计算思维,是指用计算机解决现实世界问题的思考框架。计算思维首先把现实世界的目标问题用计算机能够加工处理的数据对象描述。这些基本数据对象及其相关加工方法就是数据结构课程的主要内容。本课程是计算机科学及相关专业的专业基础课,同时也适用于其他与信息技术相关的从业人员。
数据对象的相关加工方法需要用计算机程序语言表达。由于语言简洁、开发效率高、可移植性强、资源丰富等优势,Python语言已经成为人工智能和大数据时代的第一开发语言,也逐渐成为各高校计算机编程入门教学的第一语言,在计算机各相关专业中使用Python语言进行数据结构教学将成为必然趋势。
近年来,国家大力加强人工智能领域的人才培养力度,提出到2030年实现人工智能领域全球领先的战略目标。高校是人工智能战略目标实施的主要阵地,2019年全国共有180所大学获得人工智能本科专业首批建设资格。由于数据结构课程的重要性,高校的人工智能本科专业培养方案中都将数据结构列为学科基础课; 又因Python语言在数据科学、人工智能领域的绝对优势,将Python与数据结构相结合进行教学是人工智能专业建设的不二选择。
目前,数据结构C++版、Java版的教材较为丰富,而Python语言描述的数据结构教材较少,配套的教学资源也比较少,很难满足Python语言描述数据结构教学的多样性需求。
本书具有以下特色。
(1) 数据结构理论与Python语言紧密结合。
Python语言的功能非常强大,可以表示线性表、字典等经典数据结构,实现查找、排序等操作。由于这些数据结构和操作都已实现,以致使用Python语言进行数据结构教学的可行性曾一度遭到质疑。为了达到更好的教学效果,本书在介绍数据结构普遍性理论的同时,不仅将Python语言作为数据结构和算法的描述工具,而且将Python语言的内置结构作为具体数据结构的案例进行剖析,使学生更好地理解抽象的逻辑结构和具体的存储结构之间的关系,使得数据结构理论知识的掌握和运用与Python语言的理解和实践相互支撑、相辅相成。
一方面,学生对Python语言内置数据结构的内部表示和基本操作实现方法有了更深刻的认识,对基本操作性能的理解可以避免低效算法的使用,学生的Python语言的运用能力得到了提高; 另一方面,Python语言内置结构的特点和性能表现能帮助学生更好地理解各种数据结构的性质和特点,对基础理论知识的掌握大有裨益。
(2) 注重基础理论的同时加强应用和实践能力的培养。
本书用Python语言实现了所有经典数据结构,每种数据结构可以作为单独的模块供后续章节的数据结构和算法来使用,在面向对象技术的运用上给出了有用的示例。本书在介绍每种数据结构时给出丰富的应用案例,每章配备丰富的例题和实验,力图将应用和实践与基础理论相融合,打造学生在数据结构选择、算法设计和编程等方面的过硬能力。




(3) 内容完整,力求系统性与通用性、基础性与新颖性的统一。
本书系统介绍数据结构的基础理论、算法设计的基本方法及Python语言的基本知识,内容完整,是数据结构、算法知识和编程实践的有机结合,适用于计算机及相关专业数据结构的通用教学要求。
在介绍基础性理论知识的同时,本书力求与时俱进,去除了一些陈旧的内容,例如广义表及线索二叉树等内容; 增加了一些新的内容,例如Python语言中使用的TimSort混合排序算法等。

(4) 以学生易学易懂、习得能力为编写主旨,多管齐下,注重细节,确保教材实用性。
教材采用对比、举例、小结、图表等多种方式进行多维度表达; 对同一问题举一反三,用不同方案进行求解; 对教学难点进行螺旋式深入教学; 配备丰富的实验和大量且形式多样的习题,能方便教师和学生的使用; 教材包含近300张插图和100余张表格,大量精心设计的插图和表格将抽象的内容形象化,可有效降低理解问题的难度。
本书共12章,分为三部分。
(1) 第1章介绍课程涉及的Python语言相关知识,包括Python语言面向对象的相关内容、生成器、迭代器及常用的模块等。
(2) 第2~10章介绍数据结构及算法、算法分析的基本概念,明确数据结构是什么、学什么,介绍算法的特点、描述方法以及算法分析的目的和方法;系统介绍线性表、栈、队列、树、二叉树、图等常见数据结构的基本概念、特点、存储表示、基本操作的算法实现,并给出各种数据结构的应用实例以及常见的算法设计模式。
(3) 第11章和第12章介绍计算机中最常见的查找、排序等操作的算法原理、实现方法,并对算法的时间、空间性能等进行综合分析。
本书配套资源丰富,包括教学大纲、教学课件、程序源码、部分习题答案、教学进度表,编者还为本书精心录制了1000分钟的微课视频。


资源下载提示
课件等资源: 扫描封底的“课件下载”二维码,在公众号“书圈”下载。
素材(源码)等资源: 扫描目录上方的二维码下载。
视频等资源: 扫描封底刮刮卡中的二维码,再扫描书中相应章节中的二维码,可以在线学习。


本书由苏州大学的张玉华、吕强、朱晓旭共同编写,特别感谢杨季文教授在本书编写和校对过程中给予的大力指导,感谢赵雷、周克兰、唐自立和何俊等多位专家和老师给予的指点和帮助。
由于时间和编者水平有限,书中不当之处在所难免,敬请诸位同行、专家和读者批评指正。


编者2020年8月