新版数据结构教案Word文档格式.docx
《新版数据结构教案Word文档格式.docx》由会员分享,可在线阅读,更多相关《新版数据结构教案Word文档格式.docx(66页珍藏版)》请在冰豆网上搜索。
核心地位
2.课程学习目标
(1)学习知识角度
(2)培养能力角度
3.介绍教材:
主教材和与之配套的辅助教材
4.介绍参考文献资料:
多角度、全方位学习
5.介绍网络教学资源:
6.学习方法及要求
(1)坚持上课
(2)学会读书:
预习+复习+拓展
(3)认真作业和实验
(4)下载课件、演示系统,提高记忆效率
(5)理解知识+自主实践
7.考核要求:
作业+考勤+实验+自主实践(期中考核)+期末考试
15分钟
3分钟
10分钟
2分钟
课程总结:
下定决心、树立信心、坚持恒心、改革创新
教学提示
1.开课要精彩,激发兴趣,认识重要性
2.明确课程目标:
学些什么,达到的目标
3.需要具备的基本知识,对基础差的同学多鼓励—从现在做起==追赶—超出
4.为什么学,怎样学,如何学好
5.考研
思考题
课后导读
你对你所学的专业了解多少?
你对学习这门课应该如何准备?
在数据结构方面,最早的权威性著作是Knuth所著的系列丛书《计算机程序设计艺术》,这套书非常值得一看
教学后记
教学专题——数据结构的研究对象
1-2
数据结构的兴起和发展
1.1、1.2
抽象与数据类型;
数据结构的研究对象
数据结构与类的对应关系
教学目标
知识点
学习要求
了解
理解
掌握
熟练掌握
程序设计的性质
√
数据结构的起源和发展
数据结构与程序设计的关系
计算机求解问题的一般过程
数据结构的研究对象
介绍数据结构课程体系的起源。
了解历史—专业素养
1.提出问题:
程序设计的实质是什么?
通过具体实例得出答案
2.介绍数据结构与程序设计的关系,强调数据结构始终是程序设计的基础,强调从面向对象角度看待数据结构
3.从发展的观点和应用的观点讨论数据结构的发展
4.从计算机求解问题的一般过程入手,建立抽象和数据模型的初步概念
5.通过具体实例总结数据结构的研究对象,注意引申数据元素之间的关系
12分钟
数据结构研究的对象是非数值计算问题
1.从问题求解过程入手,理解“数据结构+算法=程序”,理解数据结构和算法在问题求解中的作用
2.通过结构化程序和面向对象程序对比,从框架上理解为什么将数据结构从结构化发展到面向对象
3.数据结构是从非数值问题抽象出来的数据模型,这个阶段的学生还没有抽象和模型的概念,需要补充抽象和模型的相关知识
媒体使用
多媒体课件:
Kunth的照片及介绍;
用动画辅助解释基本概念
教学网络平台:
相关教学材料
在数据结构方面,最早的权威性著作是Knuth所著的系列丛书《计算机程序设计艺术》,这套书非常值得一看
许多人致力于计算机科学中的问题求解,实际上这正是该领域吸引人的地方。
《如何求解问题》(曹宏庆.中国水电出版社)是提高问题求解能力的经典著作
教学专题——数据结构的基本概念
2-30
数据结构的基本概念
1.4学时(70分钟)
1.3
数据结构及相关概念;
数据的逻辑结构和存储结构之间的关系
数据元素;
逻辑关系;
抽象数据类型
数据、数据项、数据对象
数据元素
数据结构
数据的逻辑结构
数据的存储结构
逻辑结构和存储结构之间的关系
数据结构的访问接口
抽象数据类型
根据生活中的实例简单理解什么是数据结构
1.给出数据的定义,举例说明什么是数据
2.给出数据元素和数据项的定义,根据上一讲得个例子体会如何界定数据元素,总结数据、数据元素、数据项之间的关系
3.给出数据结构的定义,从问题求解的角度强调数据结构包含逻辑结构和存储结构两个方面
4.给出逻辑结构的定义重点解释逻辑关系
5.给出存储结构的定义,重点强调如何表示逻辑关系
6.从数据表示的角度总结逻辑结构和存储结构的关系
7.在理解数据类型抽象的基础上,给出抽象数据类型的定义,说明:
数据模型+一组操作=ADT
8.结合抽象数据类型的定义说明数据结构的访问接口
8分钟
6分钟
5分钟
数据的逻辑结构、存储结构及其相互关系
1.注意对基本概念的引入和阐述,抓住要点,注意用生活中的实例进行类比逻辑
2.关系较抽象、较难理解,通过实例在具体数据模型中理解逻辑关系
3.抽象数据类型是贯穿课程始终的概念,不要求学生开始就深刻理解,在后续的课程中反复应用抽象数据类型的三个视图—同心圆式的教学方法
用动画实现存储结构;
[美]WilliamFord,WilliamTopp著,刘卫东,沈官林译,数据结构C++语言描述,清华大学出版社,第3章抽象数据类型和类和第7章形式数据类型
教学专题——算法的基本概念
3-1+30
算法的基本概念
1.6学时(80分钟)
算法的定义及特性;
伪代码描述算法
算法的特性;
算法及算法的特性
算法和程序的关系
算法的描述方法—自然语言
算法的描述方法—程序流程图
算法的描述方法—程序设计语言
算法的描述方法—伪代码
用C++语言中的函数描述算法
根据生活中的实例简单理解什么是算法
1.给出算法的定义,从使用的角度讲解算法的特性
2.提出问题:
算法=程序?
指出程序设计的核心是算法
3.分别用自然语言、程序设计流程图和C++语言举例描述算法,从应用角度介绍优点、缺点、使用方法、注意事项
4.综合自然语言、程序设计流程图和C++语言描述算法的优缺点,给出伪代码描述,反映伪代码描述的优势
5.介绍用C++语言中的函数描述算法,强调用伪代码和C++描述算法是两种抽象级别,体现了抽象分级的思想
6.课堂练习用伪代码描述算法
20分钟
8分钟
算法的定义和描述方法;
算法与程序的关系
1.算法特性要讲清楚透彻,从应用的角度讲解每一个特性的含义,其用途在于判断一个算法在形式上是否正确
2.伪代码描述算法比较灵活,但掌握存在难度,应先从框架上理解,再通过事例掌握基本方法
3.强调算法的作用,是不能直接执行的
《计算与算法导论》章小莉等译,电子工业出版社。
关于如何设计一个好的算法请阅读第2章和第8章
教学专题——算法及算法分析
3-2
算法及算法分析
1.4
用大O记号表示算法的时间
算法分析的方法;
用大O记号表示算法的时间性能
度量算法效率的方法—事后度量
度量算法效率的方法—事前估算
算法分析的目的
问题规模、基本语句
大O记号
估算算法时间复杂度的基本方法
最好、最坏、平均情况时间性能
通过复习数据结构和算法的基本概念引出本讲内容
1.提出问题:
什么是算法分析?
为什么要进行算法分析?
指出算法分析的目的决定了算法分析的方法
2.给出事后度量方法并指出该方法的局限性,引出事前估算的度量方法
3.根据一个算法实例给出算法分析的方法
4.给出问题规模和基本语句概念,从不同角度讲解大O记号
5.结合顺序查找算法,分析最好、最坏、平均情况的时间性能
6.说明空间复杂度的分析方法
算法分析的事前估算方法;
1.注意讲授算法分析过程中的思维变换
2.深刻理解大O记号的含义
用动画给出算法分析方法的过程;
再用板书总结
《算法分析导论》冯舜玺译,机械工业出版社。
关于算法分析较深入的讨论见
第1章算法分析概述
教学专题——线性表
(一)
4
1.线性表的逻辑结构
2.线性表的顺序存储结构
2学时(100分钟)
2.1、2.2
线性表的定义;
线性表的逻辑特征;
顺序表的存储特点;
顺序表的基本操作
线性表的抽象数据类型定义;
用伪代码描述算法,描述顺序表的基本操作
线性表的定义
线性表的逻辑特征
线性表的抽象数据类型定义
线性表的基本操作
顺序表的存储特点
顺序表类
顺序表的插入、删除操作的时间性能
顺序表的优缺点
通过几个二维表的实例
1.给出线性表的定义,总结线性表的逻辑特性
2.复习ADT的三个视图(定义视图、设计视图、实现视图)
3.给出线性表的抽象数据类型定义
4.给出顺序表的存储示意图,总结存储特点
5.复习存储地址的有关内容,给出顺序表的随机存取特性
6.顺序表类的声明、构造函数、析构函数
7.给出顺序表插入操作的执行过程,写出伪代码,再写出C++描述
8.分析插入算法的时间性能,总结算法分析的一般步骤
9.对于顺序表的删除操作,给出必要的提示,要求学生自行完成
10.给出顺序表的查找操作的执行过程和算法
11.总结顺序表的优缺点
10分钟
7分钟
15分钟
线性表的逻辑结构;
顺序表的存储特点和基本操作
1.线性表的定义要讲清楚透彻,向学生渗透一种理解概念的方法—问题分析、抓住要点、引申理解
2.通过线性表抽象数据类型进一步理解抽象数据类型的三个视图,理解模块化思想,掌握其使用方法
3.从实用角度出发复习C++语言相关知识
4.对于顺序表的基本操作算法,要讲思路、讲方法、讲过程,注意培养抽象思维能力和逻辑思维能力。
用动画辅助解释基本概念和模拟顺序表类的基本操作的执行过程
《数据结构(C语言版)》严蔚敏编著,清华大学出版社。
参阅相关章节:
关于线性表的定义采用二元组的形式
《数据结构与算法》齐德昱编著,清华大学出版社。
注意顺序表的实现与本教材不同
教学专题——线性表
(二)
5
线性表的链接存储结构及实现
2.3、2.4
单链表的存储特点;
单链表的基本操作的算法及时间性能
单链表查找、插入和删除算法
单链表的存储要点及存储特点
单链表类
单链表的顺序存取特性
单链表的插入、删除操作
单链表插入、删除操作的时间性能
单链表类的构造函数和析构函数
顺序表和单链表的比较
通过分析顺序表的缺点引出链接存储结构
1.根据一个实例给出线性表链接存储的实际内存状态,复习C++语言中指针的相关知识,抽象出单链表的存储结构示意图
2.区分指针变量和结点变量,说明头指针、头结点和尾指针
3.给出单链表类的声明,引申单链表类与顺序表类的关系
4.给出单链表查找的算法,总结单链表算法的设计模式
5.设计单链表的插入算法,分析时间性能
6.比较带头结点和不带头结点的单链表上的插入操作
7.设计单链表的删除算法,注意分析边界情况
8.对单链表类的构造函数,给出头插法和尾插法的算法
9.对单链表类的析构函数,给出必要的提示,要求学生自行完成
20分钟
5分钟
12分钟
将顺序表和单链表进行比较,总结并比较存储结构及实现方法
1.熟练使用指针是学好单链表的基本前提
2.单链表算法设计的关键是多练,安排一节习题课是非常必要的,如果学时较紧,至少通过课堂对相关作业进行点评
用动画模拟单链表各种操作的执行过程
注意单链表表的实现与本教材不同
教学专题——线性表(三)
6
1.线性表的其它存储方法
2.线性表的应用举例
2.5及课后思考题和习题
循环链表、双链表
双链表的基本操作
循环链表的存储结构
循环链表的操作
双链表的存储结构
双链表的基本操作
静态链表的存储结构
静态链表的操作
间接寻址存储结构
约瑟夫环问题描述
设计算法求解约瑟夫环问题
通过提出问题:
在单链表中如何查找某结点的前驱?
1.将循环链表的插入算法与单链表的插入算法进行比较
2.在有头结点的循环链表中,如何查找第1个结点和最后1个结点,引出带尾指针的循环链表
3.如何更快速得到某结点的前驱(空间换时间),引出双链表
4.通过图示理解双链表的插入和删除操作,给出算法
5.如何通过连续存储实现连接关系,引出静态链表
6.通过图示理解静态链表的插入和删除操作过程
7.提出问题:
将数组和指针结合起来存储线性表会怎样?
引出间接寻址
8.通过图示理解间接存储结构上如何实现插入和删除操作,并与顺序表进行比较
9.给出约瑟夫环问题的描述,介绍该问题的起源
10.从逻辑上理解约瑟夫环问题的求解过程
11.分别用顺序存储结构和单链表存储结构实现约瑟夫环问题
12.其它问题或习题举例
8分钟
20分钟5分钟
线性表的各种逻辑结构;
线性表的存储特点和基本操作
1.循环链表和双链表是单链表的变形
2.静态链表和间接寻址是顺序存储和连接存储相结合的产物
3.重点在于灵活设计各种存储结构的思想
4.通过例题检验学生掌握线性表及其存储结构的教学效果。
用动画模拟算法和示例的执行过程,用动画辅助解释基本概念
《数据结构—C++实现》穆淮扣等编著,科学出版社。
关于双链表的实现
上网查找约瑟夫环及其变形问题的解决方法,完成关于该问题的课程作业
教学专题——栈
7
栈
3.1、3.4.1
栈的操作特性、顺序栈及实现、链栈及实现
两栈共享空间
栈的定义及操作特性
栈的抽象数据类型定义
顺序栈及实现
两栈共享空间
链栈及实现
顺序栈和链栈的比较
顺序栈应用举例
通过复习线性表的插入和删除操作引出栈
1.给出栈的定义,通过实例说明栈的操作特性
2.根据顺序栈存储示意图给出入栈和出栈算法,分析时间性能。
总结:
顺序栈算法是顺序表算法的简化
3.如何提高栈空间的利用率?
引出两栈共享空间算法
4.复习单链表,如何改造成链栈?
5.根据链栈存储示意图给出入栈和出栈算法,分析时间性能。
链栈算法是单链表算法的简化
6.回顾顺序表和单链表的比较方法,引导学生得出顺序栈和链栈的比较结果
7.给出递归的定义,结合具体实例说明递归是一种描述问题和解决问题的基本方法
8.递归问题举例
9.给出描述递归函数运行轨迹的图示方法,强调递归的层次
10.总结递归函数,强调注意事项
25分钟
2分钟
3分钟
5分钟5分钟
栈的操作特性;
栈的基本操作和栈的应用
1.栈是计算机技术及程序设计中常用的数据结构之一,熟练掌握对后续学习有益
2.根据生活实例深刻理解栈的操作特性,并与线性表进行比较
3.从实用角度出发复习C++语言递归知识
4.通过递归函数的运行轨迹,引导学生理解递归的调用层次以及实参和形参的结合方法,及程序运行过程中工作栈的变化
用动画辅助解释基本概念和模拟各操作的执行过程
注意用抽象类和继承类实现栈
《数据结构》刘大友等编著,高等教育出版社,相关章节对递归和汉诺塔问题进行了较深入的介绍
教学专题——队列
8
队列
3.2、3.4.2
队列的操作特性、循环队列及实现、链队列及实现
循环队列的存储方法及队空和队满的判断
队列的定义及操作特性
队列的抽象数据类型定义
顺序队列的假溢出现象
循环队列及实现
链队列及实现
循环队列和链队列的比较
队列的应用举例
通过复习线性表和栈的插入、删除操作引出栈
1.给出队列的定义,通过实例说明队列的操作特性
2.如何存储?
引出队列的顺序存储和链接存储
3.假溢出问题?
改造顺序表,得出循环队列的存储方法
4.如何判断队空和队满?
分析各种解决方案
5.如何改造单链表实现队列的链接存储
6.链式队列的出队算法需注意边界情况(判断队空)
7.引导学生比较循环队列和链式队列
8.队列问题应用举例
队列的操作特性;
队列的基本操作和队列的应用
1.队列是程序设计中常用的数据结构之一,熟练掌握对后续学习有益
2.根据