本书写作目的
任何事物都有从无到有、从无序到有序的发展过程,人类社会的进化也是如此。有序就是循规蹈矩,有了规和矩才能画出圆和方。于是,世界万物也就有了各自的“形状”。
所谓数据结构与算法,则是用一定的“规则”和“方法”对大千世界的“重塑”。这里的规则,既不是抽象的数学,也不是具象的物理,它既要符合数学、物理等学科的思维,又要符合生活常理,更不同的是,它是一种计算机能表示,甚至能理解的方法。使用这些规则和方法,我们就可以方便地利用计算机重塑现实世界,为我们创作未来世界打下良好的基础。
计算机学科已经渗透到各个领域及行业,因此几乎所有专业(包括人工智能专业)都无法完全脱离计算机专业,数据结构是计算机类专业最基础,也是最重要的核心课程之一,它为其他后继课程的学习奠定了基础,很多学校在新工科平台的培养计划中也将其列为必修课程,数据结构的重要性不言而喻。同时,数据结构与算法又是一门实践性非常强的课程,这门课的难点不是理解不了知识点,而是想不出算法,更是写不出代码。但是,已有的教材主要注重知识点的描述方式与形式,例如用生活场景和动画展现,无法在教学过程中解决其实践性特点所带来的学习上的真正困难。那么,如何在教学过程中将理论讲解与代码实践无缝衔接,让学生真正做到边学边练呢?本书试图给出答案。
本书以动手练平台与电子资料仓库的形式为读者提供课程辅助材料和代码。书中将每一章的原理讲解部分与其代码实践部分耦合,读者在学完一个知识点原理后能立即以代码实践的形式学习其实现方式。更重要的是,可以直接对代码进行在线运行和修改,完成对一种数据结构的原理学习和代码实践。这样的学习方式能帮助读者更好地将理论知识点与实践能力点对应,也能帮助老师更高效地授课、布置作业和批改作业。
通过长期的程序设计及数据结构的教学探索与实践经验总结,我们特编写了本书,旨在分享上海交通大学ACM班的培养模式及教学方法,使读者不再畏惧代码,让每一个普通人都能上手“拿捏”代码,成为人工智能时代的弄潮儿,为我国乃至世界人工智能的发展贡献一份力量。