《数据结构》教案.docx
《《数据结构》教案.docx》由会员分享,可在线阅读,更多相关《《数据结构》教案.docx(54页珍藏版)》请在冰豆网上搜索。
《数据结构》教案
教学单元(章节):
第一章:
绪论
1.1数据结构概念
教学目的:
理解学习数据结构的重要意义
掌握数据结构的基本概念
知识要点:
数据结构、逻辑结构、物理结构、算法
4种数据的存储结构、程序与数据结构
技能要点:
数据结构、4种基本的数据结构、
4种数据的存储结构
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P11;1、2
课后分析与小结:
本节课的重点:
数据结构有关概念和术语
难点:
学习数据结构的意义
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第一章:
绪论
1.1数据结构概念
1.1.1为什么要学习数据结构
1.计算机处理问题的分类
(1)数值计算问题
(2)非数值性问题
2.非数值问题求解
算法+数据结构=程序
数据结构:
是指数据的逻辑结构和存储结构
算法:
是对数据运算的描述
1.1.2有关概念和术语
数据
数据元素
数据项
数据结构:
集合、线性、树型、图状
数据结构:
包括物理结构、逻辑结构
数据的四种基本存储方法
(1)顺序存储方法
(2)链接存储方法
(3)索引存储方法
(4)散列存储方法
教师授课教案
教学单元(章节):
第一章:
绪论
1.2算法描述
1.3算法分析
教学目的:
理解算法的定义、特性、描述方法
掌握简单的时间复杂度的估计
知识要点:
算法的特性、描述方法、算法编制的质量要求、
数据结构的基本操作、时间复杂度、空间复杂度、
技能要点:
描述算法、分析简单算法的时间复杂度
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P11;3、4
课后分析与小结:
本节课的重点:
算法的特点和描述,算法分析
难点:
算法时间复杂度的估计
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第一章:
绪论
1.2算法描述
1.2.1算法特性
(1)有穷性
(2)确定性(3)可行性(4)输入(5)输出
好的算法的特点
(1)正确
(2)可读(3)健壮(4)高效
数据结构的基本操作:
(1)查找
(2)读取(3)插入(4)删除(5)修改
1.2.2算法描述
算法描述的种类:
(1)框图/流程图算法
(2)非形式算法
(3)伪语言算法(4)高级语言算法
1.3算法分析
时间复杂度:
解决某问题所花费的时间大小,即程序运行从开始到结束所需要的时间,记为T(n)
空间复杂度:
解决某问题的程序完全运行时所占用的存储空间大小,记为S(n)
【例】算法MatrixMultidy的时间复杂度T(n)如(1.1)式所示,当n趋向无穷大时,显然有
教师授课教案
教学单元(章节):
C语言第七章:
数组
7.1一维数组的定义和引用
7.2二维数组的定义和引用
7.3字符数组
教学目的:
理解一维数组、二维数组、字符数组的定义
掌握一维数组、二维数组、字符数组的引用和初始化方法
掌握一维数组、二维数组、字符数组的简单应用程序
知识要点:
一维数组、二维数组、字符数组的定义、引用、初始化
一维数组、二维数组、字符数组相关的简单程序
技能要点:
用数组来处理相关问题的程序
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P152;7.1P152;7.3
P153;7.11P153;7.15
课后分析与小结:
本节重点:
数组的定义、引用、初始化
本节难点:
用数组求解简单的问题
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第七章数组
7.1一维数组的定义和引用
7.1.1一维数组的定义
7.1.2一维数组的引用
7.1.3一维数组的初始化
7.1.4一维数组程序举例
7.2二维数组的定义和引用
7.2.1二维数组的定义
7.2.2二维数组的引用
7.2.3二维数组的初始化
7.2.4二维数组程序举例
7.3字符数组
7.3.1字符数组的定义
7.3.2字符数组的初始化
7.3.3字符数组的引用
7.3.5字符数组的输入输出
教师授课教案
教学单元(章节):
C语言第十章:
指针
10.1地址和指针的概念
10.2变量的指针和指针变量
教学目的:
理解地址和指针的概念
掌握指针变量的定义和引用
知识要点:
地址、指针、指针变量的定义和引用、
指针变量作为函数参数
技能要点:
指针变量的定义和引用
指针变量作为函数参数
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P278;10.1
P278;10.2
课后分析与小结:
本节重点:
指针的含义、指针变量的引用
本节难点:
指针变量的引用、指针变量作为函数参数
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
C语言第十章:
指针
10.1地址和指针的概念
1.地址的概念
2.指针的概念
10.2变量的指针和指针变量
10.2.1定义一个指针变量
1.定义指针变量的一般形式:
基类型*指针变量名
2.定义指针变量的注意事项
10.2.2指针变量的引用
1.&——取址运算符。
2.*——指针运算符,
10.2.3指针变量作为函数参数
(1)使一个指针变量指向另一个变量
(2)通过指针变量访问整型变量
教师授课教案
教学单元(章节):
C语言第十章:
指针
10.3.1指向数组元素的指针
10.3.2通过指针引用数组元素
10.4.1字符串的表现形式
10.8指针运算小结
教学目的:
掌握通过指针引用数组元素
理解字符串的表现形式
掌握指针的相关运算
知识要点:
数组与指针、字符串与指针、指针运算
技能要点:
通过指针引用数组元素、字符串的表现形式
指针的各种运算
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P279;10.6
P279;10.9
课后分析与小结:
本节重点:
指针运算、通过指针引用数组元素和字符串
本节难点:
通过指针引用数组元素、字符串
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
10.3数组与指针
10.3.1指向数组元素的指针
定义一个指向数组元素的指针变量
10.3.2通过指针引用数组元素
数组元素的引用可以用
1.下标法:
a[i]
2.指针法:
*(a+i)或*(p+i)
10.4字符串与指针
10.4.1字符串的表现形式
1.用字符数组存放一个字符串
2.用字符指针指向一个字符串
3.字符串常量和字符指针的初始化
10.8指针运算小结
10.8.1有关指针的数据类型的小结
10.8.2指针运算小结
1.指针变量的加减
2.指针变量赋值
3.指针变量的比较
教师授课教案
教学单元(章节):
C语言第十一章:
结构体与共用体
11.1-11.5.1结构体
11.7.3处理动态链表所需的函数
11.10用typedef定义类型
教学目的:
掌握结构体变量的定义、引用和初始化
掌握处理动态链表所需的函数
掌握用typedef定义类型
知识要点:
结构体变量、结构体数组,malloc函数
calloc函数、free函数、typedef
技能要点:
结构体变量的定义、引用和初始化
用typedef定义类型
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P318;11.1
P318;11.5
课后分析与小结:
本节重点:
结构体变量、处理动态链表所需的函数
本节难点:
结构体变量的引用和初始化、用typedef定义类型
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第十一章:
结构体与共用体
11.1概述
11.2定义结构体类型变量的方法
1.先定义结构体类型,再用类型标识去定义变量
2.定义类型的同时定义变量3.直接定义结构体类型变量
11.3结构体变量的引用
1.结构体变量各成员的引用
引用形式:
结构体变量名.成员名
2.结构体变量各成员的输入、输出
11.4结构体变量的初始化
11.5结构体数组
1.结构体数组的定义2.结构体数组的初始化
3.结构体数组stu的存储结构4.结构体数组的引用
11.6指针与结构体
1.指向结构体变量的指针
2.指向结构体变量的指针与结构体变量的等价关系
11.7用指针处理链表
11.7.3处理动态链表所需的函数
内存分配函数原型:
void*malloc(unsignedsize);
内存分配函数原型:
void*calloc(unsignedsize);
内存释放函数原形:
voidfree(void*p);
11.10用typedef定义类型
1、使用的一般形式:
typedef原类型名新类型名;
2.用typedef定义类型的方法(举例)
①先按定义数组变量形式书写:
intn[100];
②将变量名换成新类型名:
int NUM[100];
③在最前面加上typedef:
typedefintNUM[100];
④用新类型名来定义变量:
NUM n;
3.用typedef定义类型的说明:
(1)用typedef可以声明各种类型名,但不能用来定义变量。
(2)用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
(3)使用typedef有利于程序的通用与移植。
教师授课教案
教学单元(章节):
第二章:
线性表
2.1线性表的逻辑结构
2.2线性表的顺序存储及操作实现
教学目的:
理解顺序表的定义、特点及其主要操作
掌握插入与删除算法中数据元素的平均移动次数
知识要点:
线性表的定义、特点、基本操作
顺序表的定义、特点和存储
顺序表的初始化、插入、删除、查找操作,应用举例
技能要点:
线性表的逻辑结构及基本操作
线性表的顺序存储结构及其基本操作实现
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P37;1
P38;6
课后分析与小结:
本节重点:
线性表的定义、特点和顺序表的基本操作
本节难点:
顺序表的插入和删除算法及其时间复杂度
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
2.1线性表的逻辑结构
2.1.0线性表的实际例子
2.1.1线性表的定义
2.1.2线性表的基本操作
1.初始化:
Init_List(L)
2.置空:
Setnull_List(L)
3.求长度:
Length_List(L)
4.取表元:
Get_List(L,i)
5.查找:
Locate_List(L,x)
6.插入:
Insert_List(L,x)
7.删除:
Delete_List(L,i)
2.2线性表的顺序存储结构
2.2.1线性表的顺序存储结构
1.顺序表的定义和特点
2.顺序表的存储和类型定义
2.2.2顺序表的基本算法实现
1.初始化顺序表L
2.插入
3.删除
4.按值查找
教师授课教案
教学单元(章节):
第二章:
线性表
2.3.1单链表
2.3.2单链表上基本运算的实现
教学目的:
掌握单链表的定义、特点及存储结构
掌握单链表的查找、插入与删除算法
理解带首结点的单链表的优点
知识要点:
单链表的定义、特点、标识、结点结构和存储结构
单链表的建立、求表长、查找、插入和删除算法
技能要点:
单链表的结点结构和存储结构
单链表的查找、插入与删除算法
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P38;8
课后分析与小结:
本节重点:
单链表的定义、特点和存储结构基本操作
本节难点:
单链表的查找、插入和删除算法
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
2.3线性表的链式存储结构
2.3.1单链表
1.单链表的定义和特点
2.单链表的存储结构和类型定义
2.3.2单链表上的基本运算的实现
1.建立单链表
(1)头部插入法建立
(2)尾部插入法建立
2.求表长
(1)带头结点的单链表
(2)不带头结点的单链表
3.查找操作
(1)按序号查找
(2)按值查找
4.插入操作
(1)后插节点
(2)前插节点
(3)插入运算
5.删除操作
(1)删除节点
(2)删除运算
教师授课教案
教学单元(章节):
第二章:
线性表
2.3.3循环链表
2.3.4双向链表
教学目的:
掌握单链表的定义、特点及存储结构
掌握单链表的查找、插入与删除算法
理解带首结点的单链表的优点
知识要点:
循环链表和双向链表的定义、特点、标识、结点结构
两个循环链表的连接、双向链表中结点的插入和删除
顺序表和链表的比较
技能要点:
两个循环链表的连接算法
双向链表中结点的插入和删除
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P38;7、9
课后分析与小结:
本节课的重点:
循环链表和双向链表的特点和基本操作
难点:
循环链表连接操作、双向链表的插入和删除
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
2.3.3循环链表
一.循环链表的定义
二.循环链表示意图
(1)带头结点的单循环链表
(2)仅设尾指针的单循环链表
三.循环链表的特点
四.循环链表的说明
2.3.4双向循环链表
一.双向链表的概念
二.双链表示意图
三.双链表的类型定义
四.双向链表的操作
1.双向链表中结点的前插
2.双向链表中结点的删除
五.顺序表和链表的比较
教师授课教案
教学单元(章节):
第三章:
栈和队列
3.1栈
教学目的:
掌握栈的定义、特点和存储结构
掌握顺序栈和链栈的基本运算
理解栈与递归的关系
知识要点:
栈的定义、特点、基本运算,顺序栈和链栈的主要操作
上溢、下溢,栈空与栈满的条件,栈与递归问题
技能要点:
顺序栈和链栈的置空、判栈空、入栈、出栈操作
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P63;1、3、4
课后分析与小结:
本节课的重点:
顺序栈和链栈的基本操作
难点:
栈与递归问题
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第三章:
栈和队列
3.1栈
3.1.1栈的定义和基本运算
1.栈的定义
栈:
是限制仅在表尾进行插入和删除的线性表。
2.基本运算
(1)初始化栈:
构在一个空栈
(2)置空栈:
将S置成空栈
(3)入栈:
在栈顶插入一个新元素X
(4)出栈:
删除(弹出)栈S的顶部元素
(5)取栈顶):
取栈S的顶部元素
(6)判断空栈Empty_Stack(S):
空栈返回1
3.1.2栈的存储实现和运算实现
1.顺序栈
1)顺序栈的定义
2)顺序栈基本运算
⑴置空栈
⑵判空栈
⑶入栈
⑷出栈
3.1.2栈的存储实现和运算实现
2.链栈
1)链栈的定义
2)链栈基本运算
⑴置空栈
⑵判空栈
⑶入栈
⑷出栈
3.1.3栈与递归的实现
1.具有递归特性的问题
(1)递归定义的数学函数
(2)递归数据结构的处理
(3)递归求解方法
2.递归算法的设计方法与递归过程的实现
(1)应用递归算法的前提
(2)Hanoi塔问题的递归函数
(3)Fibonacci数列的递归算法
教师授课教案
教学单元(章节):
第三章:
栈和队列
3.2栈的应用举例
3.3队列
3.4队列应用举例
教学目的:
掌握队列的定义、特点和存储结构
掌握循环队列和链队列的基本运算
理解循环队列的意义和队列的应用
知识要点:
队列的定义、特点、存储结构、基本运算
循环队列产生的原因,循环队列和链队列的主要操作
假溢出,循环队列队空与队满的条件
技能要点:
循环队列队空与队满的条件,
循环队列和链队列的入队、出队、判队空操作
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P63;2、5、9
课后分析与小结:
本节课的重点:
循环队列和链队列的基本操作
难点:
栈的应用、循环队列
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第三章:
栈和队列
3.2栈的应用举例
1.数制转换
2.表达式求值
3.3队列
3.3.1队列的定义和基本运算
1.队列的定义和特点
2.队列结构的基本操作
1.Init_Queue(Q)将Q置为一个空队列
2.In_Queue(Q,x)插入元素x为队Q的新队尾元素
3.Out_Queue(Q,x)删除Q的队头元素,并返回其值
4.Front_Queue(Q,x)返回Q的队头元素
5.Empty_Queue(Q)判队空
3.3.2队列的存储和运算实现
1.顺序队列:
定义、特点和存储结构
2.循环队列:
定义、存储结构和基本操作
3.链队列
1)定义、特点和存储结构
2)基本操作
3.4队列应用举例
教师授课教案
教学单元(章节):
第四章:
串和数组
4.1串
教学目的:
掌握串的定义、特点、相关术语和基本运算
了解串的存储结构及其基本运算实现
知识要点:
串的定义、特点、相关术语和基本运算
串的顺序存储结构和堆分配存储结构
技能要点:
串的基本运算
定长串连接、求子串和串比较操作
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P78;2、3
课后分析与小结:
本节重点:
串的定义、存储结构和基本运算
本节难点:
串连接、求子串和串比较算法
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第四章:
串和数组
4.1串
4.1.1串的基本概念
1.串的定义
2.术语
4.1.2串的基本运算
(1)求串长
(2)串赋值
(3)串连接
(4)求子串
(5)串比较
(6)串定位
(7)插入
(8)删除
(9)串替换
4.1.2串的存储结构
1.串的定长顺序存储结构
2.堆分配存储结构
3.定长顺序串基本运算的实现
(1)串连接
(2)子串
(3)串比较
教师授课教案
教学单元(章节):
第四章:
串和数组
4.2数组
教学目的:
了解数组的逻辑存储结构和内存映像
了解稀疏矩阵的定义及其数组实现
知识要点:
数组与线性表、数组的逻辑存储结构和内存映像
稀疏矩阵的定义、压缩存储方法、转置
技能要点:
数组的内存映像、数组元素地址的计算
稀疏矩阵的存储、转置
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P78;5、6
课后分析与小结:
本节重点:
数组的逻辑结构和物理结构、稀疏矩阵
本节难点:
稀疏矩阵的压缩方法
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第四章:
串和数组
4.2数组
4.2.1数组的逻辑结构
1)1维数组
2)2维数组
4.2.2数组的内存映像
1.存储方式
1)以行为主
2)以列为主
2.数组物理地址的计算
1)1维数组物理地址计算函数表达式
2)2维数组物理地址计算函数表达式
4.2.3稀疏矩阵
1.定义
2.特殊矩阵
3.稀疏矩阵的压缩存储
教师授课教案
教学单元(章节):
第五章:
树和二叉树
5.1树的概念和基本操作
5.2.1二叉树的基本概念
5.2.2二叉树的主要性质
教学目的:
掌握树的定义、特点和相关术语
理解树的基本操作
掌握二叉树的定义、相关概念和主要性质
知识要点:
树的定义、特点、相关术语和基本操作
二叉树、完全二叉树、满二叉树的定义
完全二叉树、满二叉树的性质
技能要点:
树的相关术语、树的遍历
二叉树、完全二叉树、满二叉树
二叉树的结点个数、完全二叉树的深度
教学方法:
讲授+演示
教具及教学手段:
投影
作业布置情况:
P107;1、2、8、9
课后分析与小结:
本节重点:
树和二叉树的相关概念、二叉树的性质
本节难点:
二叉树的主要性质
审批:
教研室主任(签字)年月日
抽查:
系部主任(签字)年月日
教学内容及过程
板书或旁注
第五章:
树和二叉树
5.1树的概念和基本操作
5.1.1树的定义和相关术语
1.树的定义
2.相关术语
5.1.2树的基本操作
(1)Initiate(t)初始化一棵空树t。
(2)Root(x)求结点x所在树的根结点。
(3)Parent(t,x)求树t中结点x的双亲结点。
(4)Child(t,x,i)求树t中结点x的第i个孩子结点。
(5)RightSibling(t,x)求树t中结点x的第一个右边兄弟结点。
(6)Insert(t,x,i,s)把以s为根结点的树插入到树t中作为结点x的第i棵子树。
(7)Delete(t,x,i)在树t中删除结点x的第i棵子树。
(8)Traverse(t)是树的遍历操作,访问每个结点。
5.2二叉树
5.2.1二叉树的基本概念
1.二叉树
2.二叉树的相关概念:
满二叉树、完全二叉树
5.2.2二叉树的主要性质
性质1:
层数与节点的关系
性质2:
深度与节点的关系
性质3:
非空二叉树的度为2的结点与叶子节点的关系
性质4:
完全二叉树的深度与节点的关系
性质5:
完全二叉树的相关性质
教师授课教案
教学单元(章节):
第五章:
树和二叉树
5.2.3二叉树的基本操作与存储实现
5.2.4二叉树的遍历
教学目