西南科技大学计算机科学与技术学院
理 论 课 程 教 案
学 期 2006~2007学年(2)
课程名称 数据结构
授课对象 计算机科学与技术专业05级
学 时 数 56学时
教学大纲,数据结构》教学大纲
教材名称,数据结构――使用C++语言》朱战立 2005.2
西安电子科技大学出版社
参考教材 1《数据结构(用面向对象方法与C++描述)》
殷人昆 等 清华大学出版社
2《数据结构(c语言版)》严蔚敏清华大学出版社
3、数据结构与问题求解(C++版)(第二版)
(美)Mark Allen Weiss著张丽萍译清华大学出版社主讲教师 李学俊
西南科技大学计算机科学与技术学院
http://www.cs.swust.edu.cn/
目 录
1、课程教学总体设计 ……………………………………( 3 )
2、授课计划表….…………………………………………( 4 )
3、课程教案 ……………………………………………( 9 )
4、课程教学总结 ……………………………………… ( 19 )
课 程 教 学 总 体 设 计
该课程是计算机科学与技术专业的一门专业核心基础课。该课程是在学生掌握了一门程序设计语言的基础上开设的一门专业课。通过本课程的学习,使学生学会分析研究计算机加工的数据的结构特性,掌握基本的数据组织、数据存储及数据处理的方法,掌握算法的效率分析方法,培养学生根据实际问题的需要选择和设计合适的逻辑结构、存储结构及算法的能力。
教学主要包括以下内容:
1、掌握线性表、栈、队列、数组、树、图的逻辑结构及常用的存储结构和算法,了解串、广义表、文件、优先队列、线索二叉树、回溯法,掌握顺序存储、链式存储、索引存储和散列存储;
2、掌握递归方法;
3、掌握插入排序、选择排序和交换排序,理解归并排序、基数排序;
4、掌握顺序表查找、索引表查找、散列表查找和树表查找;
5、能运用时间和空间复杂度分析算法的效率;
6、能针对实际问题,选择和设计合适的逻辑结构、存储结构及算法。
教学方法:
1多媒体课件加实际操作演示授课方式。
教师完成对基本概念和相关操作的讲解,并在此基础上利用编程语言将相应程序在计算机上进行实际的运行演示。强调理论和实践的结合。
2 案例教学在教学中多使用实例,以增强学生的实战能力。在教学过程中要避免简单的概念讲解,安排具有实际应用意义的示例进行示范讲解。
3 考核方式采用结构化评分,总成绩中建议平时成绩(作业、课堂提问、案例分析、课堂测试等)占50%、期末笔试成绩占50%。
2006/2007 学年 第 二学期
授 课 计 划
课 程 名 称:数据结构授 课 班 级:计算机2005级(本科)
学 时 数:56 学时
其中讲课:56 学时
执行的教学大纲(名称、制定日期)
,数据结构》教学大纲
教 材(名称、编著者、出版日期)
《数据结构-使用C++语言》主编:朱战立 2001.2
主 要 参 考 书:
1、《数据结构(用面向对象方法与C++描述)》
殷人昆 等 清华大学出版社
2、《数据结构(c语言版)》
严蔚敏 等 清华大学出版社
3、数据结构与问题求解(C++版)(第二版)
(美)Mark Allen Weiss著 张丽萍译
清华大学出版社
主讲教师,李学俊
辅导教师:
教研室主任(签字),曾立胜
2007年2月20日订
周别
授课顺序
授 课 章 节 的 内 容 摘 要
需要时间
作业数量
作业估计时间
1
1
2
2
3
1
2
3
4
5
第1章 C++面向对象程序设计要点函数和函数参数输入和输出类抽象类型和模板
第2章 面向对象程序设计和算法性一、抽象数据类型
1、数据结构
2、数据类型
3、抽象数据类型
4、抽象数据类型的描述方法
5、抽象数据类型的特点二、面向对象程序设计和类三、对象四、算法、算法设计目标和算法性能分析
1、算法
2、算法设计目标
3、算法的时间效率
4、算法的符号命名、书写格式和注释格式
第3顺序存储结构的表、堆栈和队列一、存储结构二、表和顺序表
1顺序表的类定义
2顺序表的类实现
3、顺序表上插入、删除算法的效率分析
4、顺序表的应用三、堆栈和顺序堆栈
1、顺序堆栈类定义和实现
2、顺序堆栈应用-表达式计算四、队列和顺序队列
1、顺序循环队列
2、顺序循环队列类的定义和实现
3、顺序循环队列的应用五、优先级队列和顺序优先级队列顺序优先级队列类定义和类实现顺序优先级队列应用六、顺序存储结构的特点
2学时
2学时
2学时
2学时
2学时
1
2
1
2
0.5小时
0.5小时
0.5小时
1.5小时
周别
授课顺序
授 课 章 节 的 内 容 摘 要
需要时间
作业数量
作业估计时间
3
4
4
5
5
6
6
6
7
8
9
10
11
12
第4章 链式存储结构表、堆栈和队列一、链式存储结构二、单链表结点类的定义和实现
2、单链表类的定义和实现
3、单链表类的应用三、单循环链表单循环链表类的定义和实现单循环链表类的应用四、双向循环链表双向循环链表概念双向循环链表类定义和实现五、链式堆栈链式堆栈类的定义和实现链式堆栈类的应用六、链式队列七、链式存储结构的特点
第5章 数组和串数组
2、特殊矩阵的压缩存储
3、稀疏矩阵的压缩存储
4、串第6章 递归
1、递归的概念
2、递归算法设计
3、递归过程和递归工作栈
第7章 树和二叉树一、树树的定义
2、树的表示方法
3、树的基本操作
4、树的存储结构类二、二叉树
1、二叉树的定义
2、二叉树的性质
3、二叉树的操作
2学时
2学时
2学时
2学时
2学时
2学时
2学时
3
2
2
2
3小时
1小时
1小时
1小时
周别
授课顺序
授 课 章 节 的 内 容 摘 要
需要时间
作业数量
作 时业估计 间
7
7
8
8
9
9
10
10
13
14
15
16
17
18
19
20
4、二叉树的存储结构
5、树和二叉树的转换三、链式存储结构的二叉树设计
1、二叉树结点类
2、二叉树的遍历
3、二叉树遍历的应用
4、应用示例
5、二叉树类四、二叉树遍历游标类
1、二叉树中序遍历游标类
2、二叉树前序遍历游标类
3、二叉树层序遍历游标类五、线索二叉树
1、线索二叉树的存储结构
2、线索二叉树类
3、中序线索二叉树类六、堆(介绍)
1、堆的定义
2、最小堆类
3、最小堆类的测试七、哈夫曼树
1、路径长度和哈夫曼树
2、哈夫曼编码
3、哈夫曼编码问题数据结构设计
4、哈夫曼编码问题算法设计第8章?图?
一、图的基本概念和基本操作?
1、图的基本概念?
2、图的基本操作?
二、图的邻接矩阵存储结构?
1、邻接矩阵
2、邻接矩阵表示的图类?
3、邻接矩阵图类的深度优先搜索遍历?
4、邻接矩阵图类的广度优先搜索遍历?
5、非连通图和连通分量?
6、邻接矩阵图类的测试?
三、图的邻接表存储结构?
1、图的邻接表存储结构?
2、邻接表存储结构的图类?
3、邻接表存储结构图类的测试
2学时
2学时
2学时
2学时
2学时
2学时
2学时
2学时
2
2
2
4
2
2
2
2
1小时
1小时
1小时
2.5小时
1小时
1小时
1小时
1小时
周别
授课顺序
授 课 章 节 的 内 容 摘 要
需要时间
作业数量
作业估计时间
11
11
12
12
13
13
14
14
21
22
23
24
25
26
27
28
四、图的其他存储结构?
1、逆邻接表?
2、十字链表
3、邻接多重表?
五、最小生成树?
1、最小生成树的基本概念?
2、普里姆算法?
3、克鲁斯卡尔算法?
六、最短路径
1、最短路径的基本概念?
2、从一个顶点到其余各顶点的最短路径?
3、所有顶点之间的最短路径?
第9章?排序?
一、排序的基本概念?
二、插入排序?
1、直接插入排序?
2、链表插入排序?
3、希尔排序?
三、选择排序?
1、直接选择排序?
2、堆排序?
四、交换排序?
1、冒泡排序?
2、快速排序?
五、归并排序?
六、基数排序?
第10章?查找?
一、查找的基本概念?
二、顺序表查找?
1、无序顺序表顺序查找?
2、有序顺序表查找?
三、索引表查找?
1、索引表结构?
2、索引结构查找的效率分析?
3、倒排索引表?
4、平衡二叉树?
四、树表查找?
1、二叉排序树?
2、二叉排序树类?
3、二叉排序树的性能分析五、哈希表查找?
1、哈希表的基本概念?
2、哈希函数构造方法?
3、哈希冲突解决方法?
4、哈希表类?
总结全课程
2学时
2学时
2学时
2学时
2学时
2学时
2学时
2学时
3
3
3
2
2
3
1小时
1小时
1小时
1小时
1小时
2小时

西南科技大学计算机学院《数据结构》教案授课学时
2学时
授课内容
第1章 C++面向对象程序设计要点
授课时间
一
要解决的问题
复习函数和函数参数复习类复习抽象类型和模板
二
教学目的
回顾C++程序设计语言的知识点,为数据结构的学习奠定基础
三
重点、难点
重点:类和模板难点:类的设计
四
教学方法
多媒体教学、讲授
五
课后作业
复习C++程序设计语言
六
详细内容
函数和函数参数函数类型函数名重载函数参数成员函数返回值类抽象类型和模板
授课学时
2学时
授课内容
第2章 面向对象程序设计和算法性能分析
授课时间
一
要解决的问题
讲授什么是数据结构,为什么要学习数据结构?
熟悉数据结构相关术语讲授什么是算法算法的性能以及如何分析算法的性能
二
教学目的
让学生初步了解什么是数据结构,为什么要学习数据结构,认识和与数据结构密切相关的几个术语以及学会分析算法的性能
三
重点、难点
重点:数据结构相关术语和算法以及算法分析难点:算法性能分析
四
教学方法
多媒体教学、讲授
五
课后作业
习题二 1、2、3、4、5、8、10、11题
六
详细内容
为什么要学习数据结构数据结构相关术语算法算法设计目的算法的性能分析时间复杂度控件复杂度
授课学时
6学时
授课内容
第3章 顺序存储结构的表、堆栈和队列
授课时间
一
要解决的问题
讲授什么线性表讲授顺序存储结构什么是堆栈什么是队列如何使用顺序存储结构存储表、堆栈和队列
二
教学目的
在熟悉线性结构的基础上,让学生学会如何使用顺序存储结构存储表、堆栈和队列结构以及学会如何实现在这种存储结构上的关于线性结构的基本操作。
三
重点、难点
重点:
堆栈和队列的概念顺序存储结构表和顺序表顺序堆栈顺序队列难点:
顺序存储结构上表、堆栈和队列的基本操作的实现
四
教学方法
多媒体教学、讲授
五
课后作业
补充作业,见课件
六
详细内容
顺序存储结构表和顺序表顺序表的类定义顺序表的类实现顺序表上插入和删除算法的效率分析顺序表的应用举例堆栈和顺序堆栈顺序堆栈类定义和实现顺序堆栈应用举例队列和顺序队列顺序循环队列顺序循环队列的定义和实现顺序循环队列的应用举例
授课学时
6学时
授课内容
第4章 链式存储结构的表、堆栈和队列
授课时间
一
要解决的问题
什么是链式存储结构如何使用链式存储结构存储表、堆栈和队列在链式存储结构下,如何实现表、队列和堆栈的基本操作
二
教学目的
使学生学会链式存储结构和使用链式存储结构存储和操作表、堆栈和队列
三
重点、难点
重点:
链式存储结构单循环链表双向循环链表难点:链表的具体实现以及链式存储结构下表、堆栈以及队列的基本操作的实现
四
教学方法
多媒体教学、讲授
五
课后作业
补充作业,见课件
六
详细内容
链式存储结构单链表节点类的定义和实现单链表类的定义和实现单链表类的应用单循环链表单循环链表类的定义和实现单循环链表的应用双向循环链表双向循环链表概念双向循环链表类定义和实现链式堆栈链式堆栈类的定义和实现链式堆栈类的应用
6、链式队列
授课学时
2学时
授课内容
第5章 数组和串
授课时间
一
要解决的问题
串的基本概念和基本的字符串操作函数矩阵的压缩存储
二
教学目的
使学生了解串的基本概念和基本的串操作矩阵的压缩存储
三
重点、难点
重点:串的概念和基本操作、矩阵的压缩存储难点:矩阵的压缩存储
四
教学方法
多媒体教学、讲授
五
课后作业
补充作业
六
详细内容
数组
C++的数组特殊矩阵的压缩存储稀疏矩阵的压缩存储串串的定义、存储结构和操作
C++的串
授课学时
2学时
授课内容
第6章 递归
授课时间
一
要解决的问题
递归的概念递归算法设计递归过程和递归工作栈
二
教学目的
让学生了解递归思想和学会使用递归的方法解决问题
三
重点、难点
重点:递归的概念和递归思想以及递归算法设计难点:递归思想和递归算法设计
四
教学方法
多媒体教学、讲授
五
课后作业
课后习题
六
详细内容
递归的概念递归思想和递归算法设计递归过程和递归工作栈递归算法的效率分析转化递归算法为非递归算法回溯法
授课学时
14学时
授课内容
第7章 树和二叉树
授课时间
一
要解决的问题
什么是树型结构树型结构如何存储在选定存储结构下树的基本操作的实现什么是二叉树二叉树的基本性质二叉树如何存储在选定结构下二叉树的基本操作的实现树和二叉树的应用
二
教学目的
熟悉树以及二叉树结构学会存储二叉树和树以及熟练对树和二叉树的基本操作
三
重点、难点
重点:
树和二叉树的基本概念二叉树的基本性质二叉树的遍历堆哈夫曼树难点:
树和二叉树类的实现和基本操作哈夫曼编码和译码的具体实现
四
教学方法
多媒体教学、讲授
五
课后作业
习题2、3、4、5、6、7、8、9、15、16、18、19、20、22、23、24、25、27、29

详细内容
仿真指针树树的定义、树的表示方法和基本操作树的存储结构树类二叉树二叉树的定义、性质和基本操作二叉树的存储结构树和二叉树的转换链式存储结构的二叉树设计二叉树节点类二叉树的遍历二叉树的应用堆堆的定义最小堆类哈夫曼树路径长度和哈夫曼树哈夫曼编码哈夫曼编码问题数据结构设计和算法设计
授课学时
10学时
授课内容
第8章 图
授课时间
一
要解决的问题
图的基本概念和基本操作图的存储图的应用
二
教学目的
图形结构的基本概念和基本擦作图的几种常见存储结构在不同存储结构下的图的基本操作的具体实现图在不同领域的应用
三
重点、难点
重点:
图的基本概念和基本操图的存储图的应用难点:图的存储结构下的操作的实现以及应用问题的实现
四
教学方法
多媒体教学、讲授
五
课后作业
习题1、2、3、12、13
六
详细内容
图的基本概念和基本操作图的存储结构邻接矩阵存储结构以及在该存储结构下图的基本操作的实现邻接表存储结构以及在该存储结构下图的基本操作的实现图的遍历深度优先搜索算法深度优先搜索算法在不同的存储结构下的实现广度优先搜索算法广度优先搜索算法在不同的存储结构下的实现最小生成树
Prim算法克鲁斯卡尔算法最短路径
授课学时
4学时
授课内容
第9章 排序
授课时间
一
要解决的问题
介绍几种常用的排序算法
二
教学目的
让学生了解常用的排序算法的思想以及学会使用典型的排序方法学会分析排序算法的效率
三
重点、难点
重点:排序算法以及排序算法的思想难点:排序算法的实现
四
教学方法
多媒体教学、讲授
五
课后作业
习题2、4、6
六
详细内容
排序的基本概念插入排序直接插入排序链式插入排序希尔排序选择排序直接选择排序堆排序交换排序冒泡排序快速排序归并排序基数排序
授课学时
6学时
授课内容
第10章 查找
授课时间
一
要解决的问题
介绍几种常用的数据查找算法
二
教学目的
让学生了解常用的查找算法的思想以及学会使用典型的查找方法学会分析查找算法的效率
三
重点、难点
重点:查找算法的思想以及查找算法的实现难点:查找算法的实现
四
教学方法
多媒体教学、讲授
五
课后作业
习题4、6
六
详细内容
查找的基本概念顺序表查找无序顺序表顺序查找有序顺序表查找索引表查找树表查找二叉排序树平衡二叉树
B-树
5、哈希表查找
课程教学总结
数据结构课程是计算机专业的核心专业基础课,主要是给学生讲解计算机程序设计中用到的各种数据描述方法和应用算法的,是一门相对抽象和难于学习的课程。因而我在上课之前,认真备课、准备充分;上课的时候,不把平时情绪带到课堂上,做到精神饱满,以热情、积极的态度去上好每一节课,把自己所有的知识都传授给我的学生,受到了同学们的好评。
在教学中我主要才用了以下方法:
在教学过程中,遵循启发式教学原则,通过各种教学方式和手段激发学生的学习欲望,积极思维,发现问题,提出问题,并逐步解决问题。
注意基本概念的讲解,通过多种方法使学生对基本概念有清楚的认识。基本概念一定要讲清楚讲透。
在教学中多使用实例,在教学过程中要避免简单的概念讲解,安排具有实际应用意义的示例进行示范讲解。
为培养学生综合应用知识的能力,通过对完整的项目的系统分析,掌握综合运用所学知识的能力。
案例教学过程中,注重锻炼学生不依靠老师解决问题的能力。要给学生思考和自己解决问题的空间。
通过面对面的交流、网上电子邮件和电话等多种答疑的方式,及时解决学生的问题。
教学效果:
达到了预期的教学目的。但在案例教学的案例数量和选取等方面,我认为还需要改进,应该尽量增多案例的个数,并能够进行比较充分的分析和深入的讲解。在后面的教学中我将在这方面进行改进。