前言


“数据结构”课程对计算机相关专业来讲是专业基础课,并因其重要性被广泛作为学位课和考研课。数据结构的研究范畴涵盖典型的逻辑结构、这些逻辑结构在计算机中的实现、算法分析及典型算法与应用等。逻辑结构用于研究对象的抽象与建模,存储设计的好坏直接决定问题求解的难易和算法性能,这些都是用计算机解决问题时不可或缺的知识与技能。因此,从课程研究内容看,“数据结构”课程是一门程序设计基础课,也是程序设计能力提升的进阶课。正因为该课程的重要性,已出版的《数据结构》教材林林总总,且其发展从未停息。2010年,本教学团队出版了《数据结构》(ISBN: 9787302214755)、《数据结构实践教程》(ISBN: 9787302214762)、《数据结构习题及学习指导》(ISBN: 9787302214779)系列教材。十多年过去了,时代发展对工科人才培养的要求不断变化着。变化的时代和变化的学生使我们积累了与时俱进的教学经验。在获得首批国家级线下一流本科课程荣誉之际,编者决定重写《数据结构》教程及修订相关系列教材。为契合“新工科”人才培养需要和工程专业认证对计算机类学生的毕业要求,本教材立足于“实用”,以“可读”“可学”“可教”“可研”“可练”为宗旨设计编排内容并将教材取名为《数据结构原理与应用》。
●可读。撰写过程中,从多方面考虑教材的可读性。概念及原理等新知识的介绍首先以文字陈述,并做到精准、简明、扼要,直明要义;然后以示例展示,将概念及原理具化,使知识一目了然。所有内容尽可能图文并茂。此外,为了简洁和增加可读性且考虑专业特性,本教材选用C/C++语言,但不拘泥于两者的严格语法,集两者优点呈现算法。 ●可学。首先,在算法描述上,教材选用了对学习者要求较低的面向过程的方法,但借用模板概念解决数据类型的抽象问题。这里主要考虑到面向对象的程序设计有完整的理论体系和架构,用它描述和理解算法对学生要求很高。而在“数据结构”课程中,语言本身只是一个工具。面向过程的描述进一步简化语法部分,突出问题求解本身,降低学习难度。其次,各种结构都有丰富的应用背景,满足学生希冀“获取解决问题的方法”及“学得可用知识与技能”的本能愿望。学生通过理解、记忆、验证、模仿、思考能切实感到收获。
●可教。用实际教学中积累的思路设计与组织教材内容,例如算法讲解给出算法的来龙去脉。首先根据算法思想分析存储设计和辅助变量设计,再给出算法设计,并且将算法步骤与算法描述一一对应,呈现代码的生成过程。教材中大量的图示及应用示例为教师教学提供了丰富的教学素材,教辅PPT将尽量展示算法执行过程。
●可研。许多算法介绍后都设置了“算法讨论”部分,提出相关问题或更深层次的问题,拓展教学深度与广度,引导思考与研究。例如在用顺序表实现“一元多项式求和问题”中,在“算法讨论”部分抛出一元稀疏多项式求和的问题以激发思考,也为后续新知识进行铺垫,增加教材内容的连贯性。
●可练。教材提供多层次的练习素材。填空题用于复习理论知识和加深对原理的理解;简答题与应用题用于知识的应用与分析能力的训练;算法设计题与上机练习题用于设计与编程技能训练。多层次的练习题可满足学习者各层次上的需求。
总之,这是一本考虑当下聚焦的“应用型”和“创新型”人才培养需要,以“可用”“实用”为宗旨的一部具有时代气息的教材。教材的配套资源有教学PPT、书中算法实现的源码、实践教程等。另应新时代发展需求,后期会提供微课。
最后感谢教学团队老师的精诚合作与辛苦付出。周建美编写了第3章和第4章,季峰和陈森博编写了第6章,丁红编写了第7章,徐慧编写了其余章节并进行全稿统稿。团队其他老师(如管致锦教授、顾颀博士、朱玲玲副教授、陈德裕副教授等)参与了本书的审稿工作,在此也谢谢他们的宝贵意见。
虽然竭尽所能,但由于编者知识、能力和时间有限,书中仍难免有疏漏和不足之处,欢迎专家和读者批评指正。

编者2021年7月