前言
结构是计算机及相关专业的核心课程,也是计算机及相关专业硕士研究生入学考试的必考科目,而且是理工专业的热门公选课程。作为程序设计的重要补充和延伸,数据结构所讨论的知识内容、蕴含的技术方法、体现的思维方式,无论进一步学习计算机专业的其他课程,还是从事计算机领域的各项工作,都有着不可替代的作用。
数据结构课程的知识丰富,内容抽象,隐藏在各知识单元的概念和方法较多,贯穿于各知识单元的链表和递归更是加重了学习难度。本书的编写者长期从事数据结构的研究和教学,深切理解学生在学习数据结构过程中遇到的问题和困惑,深入探究掌握数据结构的有效途径和方法,深刻思考数据结构对培养程序设计和计算思维的地位和作用,深度把握课程的教学目标和重点难点,本书在教学内容和教学设计等方面进行了如下处理。
1. 合理规划教学内容。紧扣《高等学校计算机专业核心课程教学实施方案》和《计算机学科硕士研究生入学考试大纲》,涵盖教学方案及考研大纲要求的全部知识点。
2. 遵循认知规律,理清教学主线。根据学生的认知规律和课程的知识结构,按照从已知到未知的思维进程逐步推进教学内容,梳理和规划了各知识单元及其拓扑结构,设计了清晰的教学主线。知识单元及其拓扑结构如图1所示。
图1数据结构课程的知识单元及拓扑结构
3. 提炼基础知识,适当扩展提高。考虑到不同学校教学要求的差异以及不同学生学习需求的差别,一方面本着“够用、实用”的原则,抓牢核心概念,提炼基础性知识,贯彻数据结构课程的基本教学要求;另一方面对某些知识点进行了适当的扩充和提高(图1中打星号部分),这部分内容可用于选讲,也可用于学生自学或课外阅读(教学建议: 目录中打一个星号可用于选讲,打两个星号可用于课外阅读,其他是必讲的基础知识)。数据结构——从概念到C实现前言4. 兼顾概念层和实现层。从抽象数据类型的角度将数据结构的实现过程分为抽象层、设计层和实现层,其中抽象层定义数据结构和基本操作集合,设计层是数据结构的存储表示和算法设计,实现层用C语言实现数据结构,既强调了数据结构的基本概念和原理方法,又注重了数据结构的程序实现和实际运用。
5. 展现求解过程,培养计算思维。通过讲思路讲过程讲方法,按照“问题→想法→算法→程序”的模式进行问题求解,采用“阐述基本思想→伪代码描述算法→C语言实现算法”的模式进行算法设计,这个过程正是计算思维的运用过程。每章通过两个应用实例展示问题求解过程以及算法设计过程。
6. 明确重点,化解难点。每一章开篇即给出该章的重点难点,以及各知识点的教学要求,在具体阐述时还有针对性的处理方法。针对数据结构内容抽象的特点,全书设计了大量插图,将抽象内容进行了具体化处理,降低了理解问题的复杂性。
总之,本书在概念的描述、实例的选择、知识的前后衔接、内容的组织结构,以及教学内容的理解、教学目标的实现、教学意图的融入、教学方法的运用等方面进行了系统思考和统筹设计,力图通过本书为读者构建多层次的知识体系。在问题求解层面,以数据表示和数据处理为主线,给出“问题→想法→算法→程序”的思维模式;在算法设计层面,通过伪代码描述算法,强调计算思维的培养;在算法分析层面,理解什么是“好”算法,给出算法分析的基本方法;在存储结构层面,通过存储示意图理解数据表示,再给出存储结构定义;在程序实现层面,给出所有数据结构的C程序实现以及使用范例;在数据结构和算法的运用层面,通过应用实例理解如何为求解问题设计适当的数据结构,如何基于数据结构设计算法,从而将数据结构、算法和程序设计有机地融合在一起。
参加本书编写的还有董亚则、王涛、党源源、肖巍、刘冰、王有敬等老师,2015级硕士研究生唐东凯和李芬田同学参与了本书的代码调试工作,本书所有代码均在DevC++ 5.11、Visual Studio 2013、Microsoft Visual C++ 6.0编程环境下调试通过,读者可向出版社或作者索要程序源码。
由于作者的知识和写作水平有限,书稿虽再三斟酌几经修改,仍难免有缺点和错误,欢迎专家和读者批评指正。作者的电子邮箱是: wanghm@ccut.edu.cn。
作者
2016年2月