1、数据结构课程教学大纲一、 数据结构课程说明(一)课程代码:141310005(二)课程英文名称:Data Structure(三)开课对象:计算机科学与技术本科专业(四)课程性质和地位:数据结构是计算机科学与技术专业的专业基础课,是介于数学,计算机硬件和计算机软件三者之间的一门核心课程。主要介绍用计算机解决一系列问题特别是非数值信息处理问题时所用的各种组织数据的方法、存储数据结构的方法以及在各种结构上执行操作的算法。由于本课程是计算机程序设计理论基础,所以本课程的学习过程也是算法设计的技巧和能力的训练过程。本课程的先导课程为C 语言 , 计算机基础 。(五)课程教学基本要求通过本课程的学习,掌
2、握各种数据结构的特点、存储表示、运算方法以及在计算机科学中最基本的应用。培养、训练学生选用合适的数据结构和编写质量高、风格好的应用程序的能力,学会如何正确的设计算法以及对算法的优劣作出分析和评价。培养学生分析问题、解决问题的能力。并为后续课程的学习打下良好的理论基础和实践基础。(六)教学内容、学时数、学分数及学时数具体分配:本课程主要包括绪论、线性表、树型结构、图、查找、排序等几个部分。通过教学的各个环节达到各章中所提的基本要求。数据结构是一门实践性较强的课程,因此在教学过程中要理论联系实际,多采用实例教学,多上机实验,注重学生实践技能的培养。习题课是重要的教学环节,教师必须予以重视。学时数:
3、 80 学时学分数: 4 学分学时数具体分配:教 学 内 容 讲授 实验/实践 合 计第一章 绪论 2 2 4第二章 线性表 4 2 6第三章 栈和队列 6 4 10第四章 串 数组和广义表 4 2 6第五章 树和二叉树 10 6 16第六章 图 8 4 12第七章 查找 6 4 10第八章 排序 6 4 10总复习 2 4 6合 计 48 32 80(七)教学方式以多媒体教学手段为主要形式的课堂教学。(八)教学方法本课程主要采用讲授法,演示法进行。采用自行制作的多媒体课件形式辅助教学,对抽象的数据结构辅之以形象的动画,提高学生的学习兴趣,加深学生对抽象概念的理解。采用项目驱动式学习,在后续实
4、践课程数据结构课程设计中布置任务,学生通过资料的查询,到设计方案、编程实现和调试,驱动学生主动学习。对不懂的知识可以通过网络与同学和老师交流,也可以自己查阅资料,然后在实验课上与老师讨论,提倡自由发表意见的学习气氛。指定多种参考资料,在批改作业的基础上,做好上机辅导工作,要求学生给出严格的文档描述,提高学生的编程能力和表达能力。建立起课程网站,学生可通过网站获取学习资料,进行自主学习和在线测试等。 (九)考核方式和成绩记载说明1.考核要求:考试课2.考核方式:笔试(闭卷)3.考试成绩:严格考核学生出勤情况,达到学籍管理规定的旷课量取消考试资格。综合成绩根据平时成绩、期中成绩、实验成绩和期末成绩
5、评定,平时成绩占 10% ,期中成绩占 10% ,实验成绩占 20% ,期末成绩占 60% 。二 、讲授大纲与各章的基本要求第一章 绪论教学要点:了解数据结构课程内容和目的,掌握数据结构的概念以及分类、抽象数据类型的表示与实现、算法的概念、算法的特性、算法的目标、算法效率的度量、算法的存储空间需求。1.掌握数据结构的概念。2.领会抽象数据类型的表示与实现。3.理解算法的概念。 4.明确算法的特性、目标。5.掌握算法效率的度量。教学重点:数据结构的概念、算法的概念与算法效率的度量教学时数:4 学时 教学内容:1.1 数据结构概述1.2 数据结构的概念1.2.1 基本概念1.2.2 数据结构及分类
6、1.2.3 数据结构课程的内容1.3 数据类型和抽象数据类型1.3.1 数据类型1.3.2 抽象数据类型1.4 算法和算法分析考核要求:1数据结构的概念(识记)2数据结构的发展概况和在计算机科学钟的地位(领会)3数据结构类型和抽象数据类型(领会)4算法和算法分析(应用)第二章 线性表教学要点:理解线性表的结构特征;掌握顺序的和链式的存储结构各自特色;熟练掌握线性表的操作,以及链表的指针运算和各种链表的操作;理解循环链表以及双向链表。1.掌握线性表的逻辑结构和基本操作;2.掌握线性表的顺序存储结构和实现方法;3.掌握线性表的链式存储结构和实现方法;4.理解单循环链表和双向链表的概念和基本设计方法
7、。教学重点:顺序表的基本操作教学难点:线性链表的操作教学时数:6 学时 教学内容:2.1 线性表的类型定义2.1.1 线性表的定义2.1.2 线性表的基本操作2.2 线性表的顺序表示和实现2.2.1 顺序表的存储结构2.2.2 顺序表的基本操作2.2.3 顺序表的其他算法举例2.3 线性表的链接存储结构及其运算2.3.1 单链表和指针2.3.2 单链表的基本操作2.3.3 单链表的其他操作2.3.4 循环链表2.3.5 双向链表考核要求:1线性表的基本概念(识记)2顺序存储的线性表(应用)3链式存储的线性表(应用)第三章 栈和队列教学要点:掌握栈和队列的定义、分别用顺序结构和单链表结构实现栈和
8、队列,栈和队列的典型应用,栈与递归的实现。掌握利用栈和队列解决实际问题的方法。1.准确掌握栈和队列的表示和实现。2.掌握栈和队列的操作特点。3.了解循环队列以及其相关操作。教学重点:队列与栈的基本操作教学难点:利用栈和队列解决实际问题的方法教学时数:10 学时 教学内容:3.1 栈3.1.1 栈的定义及基本操作3.1.2 栈的表示和实现3.2 栈的应用举例3.3 队列3.3.1 队列的定义3.3.2 队列的表示和实现3.4 队列的应用举例考核要求:1栈和队列基本概念(识记)2栈和队列的特性(应用)3栈和队列的基本操作(应用)第四章 串、数组教学要点:了解串的概念和串的相关操作;掌握数组的概念及
9、存储结构;了解特殊矩阵以及稀疏矩阵的压缩存储。1.了解串的概念及存储结构。2.了解串的相关操作。3.掌握数组的存储结构及应用。 4.理解矩阵的压缩存储方法。教学重点:数组教学难点:稀疏矩阵的压缩存储教学时数:6 学时 教学内容:4.1 串的定义和操作4.2 串的存储结构4.2.1 串的顺序存储4.2.2 串的堆分配存储4.2.3 串的链式存储4.3 串的操作应用举例4.4 数组4.4.1 数组的概念4.4.2 数组的顺序存储结构4.4.3 数组的应用举例4.5 矩阵的压缩存储考核要求:1存储结构(识记)2串的相关操作(领会)3数组的存储结构(应用)4矩阵的压缩存储(应用)第五章 树和二叉树教学
10、要点:掌握树和二叉树的基本概念;熟练掌握二叉树的基本性质;掌握二叉树的存储结构;掌握二叉树的遍历方法,了解线索二叉树的概念及建立算法;理解树和森林的概念以及存储结构;掌握森林与二叉树的转换方法;理解树和森林的遍历;理解赫夫曼树及其应用;掌握赫夫曼编码方法。教学时数:16 学时 教学重点:二叉树的概念、基本性质、二叉树的遍历教学难点:线索二叉树教学内容:5.1 树的定义以及基本术语5.1.1 树的定义5.1.2 树的基本术语5.2 二叉树5.2.1 二叉树的定义和基本术语5.2.2 二叉树的几个基本性质5.2.3 二叉树的存储结构5.3 遍历二叉树5.3.1 二叉树的遍历方法5.3.2 二叉树遍
11、历算法描述5.3.3 二叉树遍历应用举例5.3.4 线索二叉树5.4 树和森林5.4.1 树和森林的存储结构5.4.2 树和森林的遍历5.5 哈夫曼树及应用5.5.1 哈夫曼树的基本概念5.5.2 判定树5.5.3 哈夫曼编码考核要求:1树的定义以及基本术语(识记)2二叉树(领会)3遍历二叉树(应用)4线索二叉树(应用)5树和森林(领会)6哈夫曼树及其应用(应用)第六章 图教学要点:熟练掌握图的定义和术语;熟练掌握图的存储结构(邻接矩阵和邻接表);熟练掌握图的遍历方法:深度优先搜索和广度优先搜索;理解图的连通性问题;理解无向图的连通分量和生成树;掌握最小生成树;了解有向无环图及其应用;了解拓朴
12、排序;了解关键路径;掌握最短路径。1.理解图的定义和术语;2.熟练掌握图的存储结构(邻接矩阵和邻接表);3.熟练掌握图的遍历方法:深度优先搜索和广度优先搜索;4.理解图的连通性问题;5.掌握无向图的连通分量和生成树;6.掌握最小生成树;7.了解有向无环图及其应用;8.了解拓朴排序;9.了解关键路径;教学重点:图的概念及存储结构(邻接矩阵和邻接表) 、最小生成树教学难点:最小生成树、最短路径教学时数:12 学时 教学内容:6.1 图的概念6.1.1 图的定义和术语6.1.2 图有关术语的示例6.2 图的存储结构6.2.1 图的邻接矩阵存储表示6.2.2 图的邻接表存储表示6.2.3 图的建立算法
13、6.3 图的遍历6.3.1 深度优先搜索遍历6.3.2 广度优先搜索遍历6.4 连通网的最小生成树6.4.1 克鲁斯卡尔算法6.4.2 普里姆算法6.5 最短路径6.5.1 单源点最短路径6.5.2 每一对顶点间的最短路径6.6 拓扑排序6.7 关键路径考核要求:1图的概念基本术语(识记)2图的存储结构(应用)3连通网的最小生成树(领会)4最短路径(应用)5拓扑排序(领会)6关键路径(领会)第七章 查找教学要点:熟练掌握静态查找表的顺序查找、折半查找、分块查找;掌握动态查找表;掌握二叉排序树;理解平衡二叉树;掌握哈希表;掌握哈希函数的构造方法和处理冲突的方法;了解哈希表的查找及其分析。1.熟练
14、掌握静态查找表的顺序表的查找、折半查找、分块查找;2.掌握动态查找表;3.掌握二叉排序树;4.理解平衡二叉树;5.掌握哈希表;6.掌握哈希函数的构造方法和处理冲突的方法;7.了解哈希表的查找及其分析。教学重点:静态查找表的顺序查找、折半查找,二叉排序树,哈希表教学难点:二叉排序树、平衡二叉树教学时数:10 学时 教学内容:7.1 基本概念7.2 静态查找7.2.1 静态查找的基本操作7.2.2 静态查找的顺序存储结构7.2.3 顺序查找7.2.4 折半查找7.2.5 分块查找7.3 动态查找表7.3.1 动态查找的基本操作7.3.2 动态查找的二叉链表结构7.3.3 二叉排序树7.3.4 平衡
15、二叉树7.4 哈希表7.4.1 哈希表的概念7.4.2 哈希函数的构造方法7.4.3 处理冲突的方法7.4.4 哈希表的查找和分析7.4.5 查找操作应用举例考核要求:1查找的基本概念(识记)2静态查找(应用)3动态查找表(应用)4哈希查找(应用)第八章 排序教学要点:掌握排序以及其相关概念;掌握直接插入排序法;掌握希尔排序法;掌握冒泡排序法;掌握快速排序法;掌握简单选择排序法;掌握树型选择排序法;理解堆排序法;了解归并排序法;掌握各种内部排序法的比较。1.准确掌握排序以及其相关概念。2.掌握插入排序法。3.掌握交换排序法。 4.掌握选择排序法。5.了解归并排序法。6.掌握各种内部排序法的比较
16、。7.了解外排序教学重点:各种排序方法以及比较教学难点:希尔排序、快速排序、堆排序教学时数:10 学时 教学内容:8.1 基本概念8.2 插入排序法8.2.1 直接插入排序8.2.2 希尔排序8.3 交换排序法8.3.1 冒泡排序8.3.2 快速排序8.4 选择排序法8.4.1 直接选择排序8.4.2 堆排序8.5 归并排序法8.5.1 两个有序序列的归并8.5.2 一趟归并排序8.6 基数排序法8.6.1 多关键字排序8.6.2 链式基数排序8.7 各种内部排序法的比较8.8 排序操作应用举例考核要求:1插入排序法(应用)3交换排序法(应用)4选择排序法(应用)5归并排序法(领会)6基数排序
17、(领会)7各种内部排序法的比较(应用)三 、推荐教材和参考文献1.数据结构C 语言描述 ,耿国华等编著,西安电子科技大学出版社,2008 年2.数据结构(C 语言版) ,严蔚敏吴伟民编著,清华大学出版社,2006 年3.D. E. Knuth, the art of computer programming volume 1/fundamewfal algorithms; volume 3/sorting and searching by add sonwesley pub lishing company ,in c 1973 4. 算法程序数据结构 沃思著 科学出版社 19845.数据结构
18、,晋良颖编,第一版,人民邮电出版社,2006 年6.数据结构辅导与习题集 ,付百文、张宇宏、周海燕编,第一版,人民邮电出版社,2004 年7.数据结构(用面向对象方法与+语言描述) ,殷人昆编,(第二版),清华大学出版社, 2007 年8.数据结构课程设计 ,苏仕华,机械工业出版社,第一版,2005 年9.数据结构课程设计(C/C+描述) ,阮宏一编,电子工业出版社,2011 年10.FUNDAMENTALS OF DATA STRUCTURES ,FULLS HORO-WITZ&SARTAJ SAHNT,程惟宁译,新时代出版社,2006 年编写负责人: 胡慧 教研室主任: 胡慧 分管副院长: 柳超