本书核心内容为顺序存储与链式存储,强调函数的重要性,包括示例的函数给出、栈在递归函数的应用等。本书包括基础理论(1-2章),基础应用(3-7章),常规应用(第8-9章),经典算法分析(10章)4部分,实现了从理论到实践的过渡,适合应用型本科学生作为教材使用,紧扣学时安排教学内容。本书适合计算机科学与技术、软件工程、信息管理与信息系统等专业应用型本科学生学习使用。
将本门课程多年的教学经验总结归纳成书,是编者的初衷。
作为计算机类相关专业学生的专业基础课程,算法与数据结构具有较长远的开设历史,同类教材也非常多,本书知识体系及内容撰写具有以下一些特色。
(1)知识结构符合当前对该课程的主流认知。
(2)针对当前大学生编程普及,但对计算机工作原理却比较薄弱这一特点,内容编写中强调了顺序存储与链式存储,以加强同学们对内存管理及计算机工作原理的了解。
(3)强调函数的重要性,包括示例的函数的讲解、栈在递归函数的应用等,以加强模块化设计的理念。
(4)重视整本书的内在逻辑性,从文字组织及示例设置上,隐性地分为四个部分:基础理论(第1~2章),基础应用(第3~7章),常规应用(第8~9章),经典算法分析(第10章)。既体现教材由理论到实践的递进,也保证72(56 16)课时左右的紧凑完整。
作为应用型本科专业基础教材,创新并不是一个主要的追求目标。本书基于多年教学经验,在汇集出本课程的一些重点和难点基础上,针对不同内容设计解析过程,除了文字描述外,还包括图示分析、示例演算、表格总结等,力求将问题讲清讲透。其中,KMP算法,二叉树线索下的前驱后继的查找,图的遍历,图的最短路径、关键路径等内容的讲解,都不同于一般教材直接给出对应的公式或解决方案,而是从思维的习惯性出发,采用朴实的举例或说理,希望更加有助于同学们的理解。诸如此类的尝试,虽然在教学中实践多次,但作为一本正式出版教材中的内容,我们依然谨慎处理,首先由编写老师共同分析,再请学生参照其他教材阅读比较,给出心得体会和改进意见。对每一章结尾的小结,给出具有启发意义的观点,即使未经证实但在没有证伪的情况下,也呈现给广大师生,以提高其深究、探索的兴趣。
全书采用C语言实现函数,方便一般高校培养计划的顺利实施,同时,因为C语言对底层的操作能力要求及非封装特性,可以更为全面地刻画出数据结构与算法的一些关键问题,以帮助学生对计算机编程有更深刻的理解。
由于我们一直采用由唐善策等主编的《算法与数据结构用C语言描述》,所以在本次编写过程中,参照了该教材部分内容,在此特别申明并表示感谢。其他参考文献,已列于书后,在此对相关作者一并表示感谢。
本书的1~9章内容作为本课程的传统知识体系应该课内讲授,其中一些较难的章节,例如,约瑟夫问题、迷宫问题等,可以考虑选讲。最后1章,可以仅选择一两个算法进行讲解。
本书由金陵科技学院李广水、钱海忠两位老师任主编,广东省科学技术情报研究所何静从应用实践方面、昆士兰科技大学Fuguo Wei从软件工程国际合作培养角度提出编写意见,对教材的整体结构及内容组织给予了极大的帮助,任本书副主编,李广水进行全书统稿工作。
真心感谢电子工业出版社李静编辑的悉心审稿,她认真的工作态度、执着的精神,真实地感动了我们,也提高了我们对本书质量保证方面的信心。
即便如此,由于知识及能力的有限,疏漏及不足之处依然难免,恳请广大读者朋友给出批评建议,在此表示衷心感谢!
作者邮箱:yz_lgs@126.com
编 者
2017年6月
李广水,南京林业大学森林经理博士,教授,金陵科技学院软件工程学院教师,多次获得江苏省高等教育学会、教育科学研究院、校级教学成果奖,在软件工程专业从事十几年的教学工作,教学严谨,科研认真,主持江苏省多项科研教学项目。