1、数据结构 A(一)基本信息 中文课程名称:数据结构 A 英文课程名称:Data Structure A课程编号:2001006学分:3.5学时:56适用专业:软件工程专业及相关专业先修课程:计算机科学导论、程序设计基础、离散数学开课系(教研部):软件工程执笔:刘忠民审核:郑巍课程简介:数据结构 A是软件工程、计算机科学与技术等专业的一门重要学科基础课,也是一门理论性、技术性很强的主干课程。本课程的主要任务是系统地介绍非数值计算程序设计问题中数据的逻辑结构、存储结构及其差异、各种基本操作的实现,介绍两种常用运算:查找和排序。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程,它不仅
2、是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的基础。通过本课程的学习,使学生掌握如何根据问题的需求合理地组织数据,在计算机中有效地存储数据和处理数据,并能够对算法进行设计与分析,为后续计算机、软件工程专业课的学习,以及未来从事计算机软硬件研究与开发,打下一个良好的基础。(二)课程的性质和地位数据结构 A是软件工程等相关专业的学科基础平台课,是软件工程学科的核心课程。当用计算机来解决实际问题时,就要涉及到数据的表示及数据的处理,而数据表示及数据处理正是数据结构课程的主要研究对象,通过这两方面内容的学习,为后续课程,特别是软件方面的课程打下厚实的
3、知识基础,同时也提供了必要的技能训练。因此,数据结构课程在计算机科学与技术等相关专业中具有举足轻重的作用。(三)教学目标通过本课程的学习,要求学生理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现;在掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析;能够选择合适的数据结构和方法进行问题求解,对算法设计的技巧有所体会,从而提高编程能力和编程质量。通过本课程的上机实验,对学生进行复杂程序设计的训练,要求学生书写符合软件工程规范的文件(实验报告) ,编写的程序代码应结构清晰、正确易读,能上机调试并排除错误。(四)教学内容1绪论 (1)什么是数据结构 (
4、2)基本概念和术语 (3)抽象数据类型的表示和实现 (4)算法和算法分析重点:数据结构的基本概念,包括数据的逻辑结构、存储结构、数据的运算及相互关系难点:算法复杂度的分析和计算方法2线性表 (1)线性表的类型定义 (2)线性表的顺序表示和实现 (3)线性表的链式表示和实现 (4)一元多项式的表示及相加重点:线性表的逻辑结构定义、线性表的顺序存储结构及其基本操作的实现、线性表的链式存储结构及其基本操作的实现难点:如何设计有效算法解决与线性表相关的应用问题,如:一元多项式的表示及相加3栈和队列 (1)栈 (2)栈的应用举例 (3)栈与递归的实现 (4)队列 重点:栈和队列的顺序存储结构、链式存储结
5、构及基本操作的实现,栈在函数调用中所起的作用,栈和队列的典型应用(表达式求值、迷宫问题)难点:栈和队列的典型应用(表达式求值、迷宫问题)4串 (1)串类型的定义 (2)串的表示和实现 (3)串的一般模式匹配算法 (4)串操作应用举例重点:串的抽象数据类型定义及其基本运算、串的模式匹配难点:模式匹配的改进算法(KMP 算法)5数组 (1)数组的定义 (2)数组的顺序表示和实现 (3)矩阵的压缩存储重点:二维数组的顺序存储结构,稀疏矩阵的三元组表示,稀疏矩阵的快速转置难点:稀疏矩阵的快速转置6树和二叉树 (1)树的定义和基本术语 (2)二叉树 (3)遍历二叉树和线索二叉树 (4)树和森林 (5)赫
6、夫曼树及其应用 重点:二叉树的性质,二叉树的递归遍历算法及其应用,二叉树的先序、中序非递归遍历算法,求赫夫曼编码的算法难点:二叉树的先序、中序非递归遍历算法,求赫夫曼编码的算法7图(1)图的定义和术语 (2)图的存储结构 (3)图的遍历 (4)最小生成树 (5)有向无环图及其应用 (6)最短路径 重点:图的邻接矩阵和邻接表存储结构,图的深度和广度优先遍历算法,最小生成树,拓扑排序,关键路径,最短路径难点:关键路径,最短路径查找 (1)静态查找表 (2)动态查找表 (3)哈希表 重点:顺序查找,二叉排序树,哈希表的构造与查找难点:二叉排序树,平衡二叉树9内部排序(1)概述 (2)插入排序 (3)
7、快速排序 (4)选择排序 (5)归并排序 (6)基数排序 (7)各种内部排序方法的比较讨论重点:直接插入排序,希尔排序,快速排序,堆排序,链式基数排序难点:快速排序,堆排序,链式基数排序(五)实践教学安排项目编号 实验项目实验学时 实验类型 实验要求 每组人数1 实验一 线性表的顺序存储结构 2 验证性 必修 2 实验二 线性表的链式存储结构 2 验证性 必修 3 实验三 栈和队列的综合应用 2 创新性 必修 4 实验四 数组及其应用 2 设计性 必修 5 实验五 二叉树及其应用 2 综合性 必修 6 实验六 图及其应用 2 设计性 必修 7 实验七 查找 2 设计性 必修 8 实验八 内部排
8、序 2 设计性 必修 9 实验九 哈夫曼编码 4 创新性 选修 合 计 20 必修学时:16选修:4(六)教学方法与习题要求建议部分使用大屏幕投影教室进行授课,按照现代教学论的基本原则,根据学生的认知基础、思维水平、具体内容、教学目标和条件设施灵活采用不同的教学方法;同时,积极采用综合“引导型”导学式教学方法。根据教学基本要求、培养方案和教材内在联系,按“问题”组合为自学单元,按“引导自学质疑精讲练习小结并布置作业”六段程序进行教学,重在引导,提高学生自学能力。本课程习题在保证教学需求的前提下贯彻少而精的原则。由于本课程实践性较强,应重视上机实验,要求做预习报告、实验报告,要求批改作业和实验报
9、告,每次批改量不少于三分之一。第二章重点突出线性表两种存储结构(顺序存储和链式存储)下典型算法的设计与实现,第三章围绕栈的应用展开,第六章以二叉树递归算法为核心展开,第九章以典型内部排序算法为主。(七)考核方式及成绩评定考核方式:闭卷成绩评定:期终考试占总成绩的 60%,实验成绩占总成绩的 30%,平时成绩占总成绩的 10%(八)推荐教材或讲义及主要参考书1.严蔚敏,吴伟民. 数据结构(C 语言版)M.北京:清华大学出版社,2011 年.2.严蔚敏,吴伟民,米宁. 数据结构题集(C 语言版)M.北京:清华大学出版社,2011 年.3.程杰. 大话数据结构M.北京:清华大学出版社,2011 年.4.刘琳岚. 数据结构习题与实验M.南昌航空大学,2016 年,第 2 版.(九)学时分配序号 教学内容 学时 其 中分配 讲授 实验 上机 实践1 绪论 4 42 线性表 10 6 43 栈和队列 8 6 24 串 2 25 数组 8 6 26 树和二叉树 14 12 27 图 8 6 28 查找 10 8 29 内部排序 8 6 2合 计 72 56 16