前言 一、 教材背景 课程组负责的 “数据结构与算法”被评为2015年广东省精品在线开放课程(粤教高函〔2016〕135号),本课程也是2019年国家“双高计划”专业群建设项目(教职成函〔2019〕14号)的专业核心课程。 本书与广东省精品在线开放课程配套,参考了国际上一些相关的专著和多本国内同类教材,结合全体参编教师多年的教学经验和实际教学条件编撰而成。本书注重教学活动的设计,包括技能目标、思维导图、项目描述、相关知识、项目实现、习题等环节。全书提供丰富的教学学习资源,可供学生、企业人员和社会学习者参考、学习和使用。教学资源包括课程标准、考核方案、源代码、拓展项目、演示文稿等。 二、 教材结构 本书包括绪论和9个模块内容。 (1) 绪论。这是数据结构学习的入门部分,主要讲述学习数据结构课程的意义、数据结构的相关内容、算法的知识,为后续项目的展开做好知识的积累和铺垫。 (2) 项目化教学。模块1到模块9为项目化教学内容,都引入一个项目,按照项目开发的逻辑关系开展教学工作,所讨论的内容包括: 线性表、栈、队列、字符串、数组与矩阵、树、图、查找算法及排序算法。其中,线性表、栈、队列、字符串、数组与矩阵属于线性结构,树和图是非线性结构,查找算法和排序算法是应用广泛的算法。 9个模块具体如下。 模块1介绍排队叫号器,用线性表结构实现。 模块2介绍歌曲播放器,用堆栈结构实现。 模块3介绍医院排队叫号系统,用队列结构实现。 模块4介绍身份证信息的提取,用字符串结构实现。 模块5介绍图片压缩小软件,用矩阵结构的压缩存储实现。 模块6介绍哈夫曼编码,用树结构实现。 模块7介绍最短地铁乘坐线路小软件,用图结构实现。 模块8介绍查找书籍小软件,用查找算法实现。 模块9介绍成绩排序小软件,用排序算法实现。 每个模块实现的项目按照功能描述→设计思路→相关知识→项目实现等多个环节展开。功能描述用于理解项目的具体功能需求; 设计思路描述项目实施的具体方法; 相关知识是项目成功实现要掌握的知识点; 动手实践是为了巩固这些知识点设计的实训内容; 项目实现是具体的代码。 三、 教材特色 本书依据课程需求,确立了“以项目为背景,以知识为主线,以提高能力和兴趣为目的,全面提升技能水平和职业素养”的设计理念。本书特色为: 项目式驱动、信息化教学、激发学习兴趣。 (1) 项目式驱动。课程组教师和企业人员设计了9个生活中的小场景,用数据结构的知识解决问题,使读者对所学的知识融会贯通,能学懂会用。 (2) 信息化教学。借助超星平台,配备了多种形式的教学资源,网站上设有闯关模式,激发学生的自主学习意识,课堂教学向以学生为中心的信息化课堂转变。 (3) 激发学习兴趣。本书配套有提供源代码和微课视频等多种资源,教学内容包括技能目标、项目描述、项目实施等环节,让教与学融为一体,激发学生的求知欲望,提高学生的学习兴趣。 四、 课程资源 为了方便教师教学及学生自学,本书配有微课、动画、电子课件、源代码、习题答案等相关资源,请联系编者或者访问清华大学出版社相关网站下载,如有问题可与清华大学出版社联系。 五、 致谢 本书的编写出版是本课程全体教学人员集体智慧的结晶。统稿过程正值新春佳节,课程组同人们加班加点,按质按量完成了项目化教材的再版修订工作,并增加了微课视频。 课程组与合作企业珠海新安捷信息技术有限公司项目经理席冯彦参与了所有项目的编码工作,同时对全书的实例和知识点的选择提出了很好的建议。 同时也向支持和参与本书编写工作的所有老师和同事表示感谢! 搁笔的一刹那,感慨良多。数据结构是程序的灵魂,讲好这门课程,让学生学懂弄通“数据结构与算法”,是我们的初衷和追求。尽管课程组老师在写作过程中非常的认真和努力,也对内容的组织、案例的选用以及项目化教学的融入做了充分的准备,但仍深感道长且阻,希望读者朋友们向我们多提宝贵建议,对错误不吝指正,我们感激不尽! 编者2022年2月