《数据结构(C语言版)》教案.doc
《《数据结构(C语言版)》教案.doc》由会员分享,可在线阅读,更多相关《《数据结构(C语言版)》教案.doc(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据构造C语言版教案2022 至20_ 学年第 一 学期 教案 课程名称数据构造使用教材数据构造C语言版教学时数56课程性质必修任课班级人数信管53人信息系部 信管教研室 任课老师 山东科技大学泰山科技学院 课 时 授 课 计 划 2022-20_学年第 二学期第1周 授 课 日 期 2月 20 日 星期1 月 日 星期 月 日 星期 月 日 星期 月 日 星期 班 级 信管10-1 根本课题 第1章 绪论 1.1-1.2 教学目的与要求:1.理解数据构造的根本概念 2.理解常用术语 教学重点:数据构造的根本概念和术语 教学难点:数据元素之间的四种构造关系 作业及参考书:1、 什么是数据构造?
2、 数据构造算法实现及解析/高一凡 编著 教具:多媒体 板书 课堂类型:讲授 教学过程:自我介绍开课引入展开举例小结作业 一、自我介绍和课程介绍 约8min 课时:64 二、引入 约2min 由问题的提出引入 三、讲课进程设计 1.1 什么是数据构造 1.1.1、数据构造与其它的关系 约15min 数据构造 +算法 =程序 程序设计: 为计算机处理问题编制一组指令集 算法: 处理问题的策略 数据构造: 问题的数学模型 1.1.2、当今计算机应用的特点:约25min l) 所处理的数据量大且具有一定的关系;2) 对其操作不再是单纯的数值计算,而更多地是需要对其进展组织、管理和检索。举例说明:1)
3、学生成绩表 2)井安棋对弈 3)交通管理 结论 计算机的操作对象的关系更加复杂,操作形式不再是单纯的数值计算,而更多地是对这些具有一定关系的数据进展组织管理;我们将此称为非数值性处理。要使计算机可以更有效地进展这些非数值性处理,就必须弄清楚这些操作对象的特点,在计算机中的表示方式以及各个操作的详细实现手段。1.2 根本概念和术语 1.1.1、数据与数据构造 约20min 数据:是对客观事物的符号表示。所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。是计算机处理的信息的某种特定的符号表示形式。数据元素:是数据集合中的一个“个体”,是数据构造中讨论的根本单位。数据对
4、象:是性质一样的数据元素的集合,是数据的一个子集。数据构造:是互相之间存在一种或多种特定关系的数据元素的集合。这种集合称为构造。数据的逻辑构造可归结为以下四类: 种类 特征 例如 集合 元素间为松散的关系 线性构造 元素间为严格的一对一关系 如上面的成绩表中各元素 树形构造 元素间为严格的一对多关系 图状构造或网状构造元素间为多对多关系 数据构造的形式定义为:数据构造是一个二元组 数据的存储构造 : 逻辑构造在存储器中的映像 数据元素的映象方法:计算机中存储信息的最小单位:位,8位为一字节,两个字节为一字,字节、字或更多的二进制位可称为位串。在逻辑描绘中,把位串称为元素或结点。关系的映象方法:
5、顺序映象 链式映象 1.2.2、数据类型 约5min 数据类型 是一个 值的集合和定义在此集合上的 一组操作的总称。1.2.3、抽象数据类型 约20min 是指一个数学模型以及定义在此数学模型上的一组操作。关键:使用它的人可以只关心它的逻辑特征,不需要理解它的存储方式。定义它的人同样不必要关心它如何存储。抽象数据类型表示法:三元组表示:D,S,P其中D是数据对象,S是D上的关系集,P是对D的根本操作集。书中的定义格式:ADT 抽象数据类型名数据对象:数据关系:根本操作:ADT 抽象数据类型名 ADT 有两个重要特征: 数据抽象 数据封装 四、本次课小结:约3min 1.熟悉各名词 2.术语的含
6、义 3.掌握根本概念 五、作业 约2min 2、 什么是数据构造? 课 时 授 课 计 划 2022-20_学年第 二 学期第1周 授 课 日 期 2月 24日 星期5 月 日 星期 月 日 星期 月 日 星期 月 日 星期 班 级 信管10-1 根本课题 抽象数据类型的表示与实现 算法和算法分析p 教学目的与要求:类C语言的各种句型及算法描绘的标准 教学重点:类C语言的各种句型及算法描绘的标准 教学难点:类C语言的各种句型及算法描绘的标准 作业及参考书:数据构造算法实现及解析/高一凡 编著 教具:多媒体 板书 课堂类型:讲授 教学过程:复习引入展开举例小结作业 一、复习:约5min 1、数据
7、构造的根本概念 2、一些根本术语 二、引入 约2min 由程序设计过程遇到的问题引入 三、讲课进程设计 1.3抽象数据类型的表示与实现 1.3.1根本操作:约15min Assignple_( Z, v1, v2 ) 操作结果:构造复数 Z,其实部和虚部 分别被赋以参数 v1 和 v2 的值。Destroyple_( Z) 操作结果:复数Z被销毁。GetReal( Z, realPart ) 初始条件:复数已存在。操作结果:用realPart返回复数Z的实部值。GetImag( Z, ImagPart ) 初始条件:复数已存在。操作结果:用ImagPart返回复数Z的虚部值。Add( z1,z
8、2, sum ) 初始条件:z1, z2是复数。操作结果:用sum返回两个复数z1, z2 的和值。1.3.2对本书所采用的类C语言作简要说明 约18min 1.预定义常量及类型 2、数据构造的存储构造typedef 3、算法描绘为以下的函数形式:4.在算法描绘中可以使用的赋值语句形式有:5.在算法描绘中可以使用的选择构造语句形式有:6.在算法描绘中可以使用的循环构造语句形式有:7.在描绘算法中可以使用的完毕语句形式有:8.在算法描绘中可以使用的输入输出语句形式有:9.在算法描绘中使用的注释格式为:10.在算法描绘中可以使用的扩展函数有:11.逻辑运算约定 1.4算法和算法分析p 1.4.1、
9、算法 约10min 算法是为理解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性:1有穷性 2确定性 3可行性 4有输入 5有输出 1.4.2、算法设计的原那么 约10min 设计算法时,通常应考虑到达以下目的:1正确性2.可读性3强健性4高效率与低存储量需求 1.4.3、算法效率的衡量方法和准那么 约20min 通常有两种衡量算法效率的方法 事后统计法 缺点:1必须执行程序 2其它因素掩盖算法本质 事前分析p 估算法 和算法执行时间相关的因素:1算法选用的策略2问题的规模3编写程序的语言4编译程序产生的机器代码的质量5计算机执行指令的速度 算法 = 控制构造 + 原操
10、作 固有数据类型的操作一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。在计算时间复杂度时所采用的记号“O”是数学符号,其严格的数学定义是:假设T(n)和f(n)是定义在正整数集合上的两个函数,那么T(n)=O(f(n)表示存在正的常数c和n0,使得当n=n0时都满足0=|ai-1 ,aiD, i=2,n 根本操作:构造初始化操作:InitList( L ) 操作结果:构造一个空的线性表L。构造销毁操作:DestroyList( L ) 初始条件:线性表 L 已存在。操作结果:销毁线性表 L。引用型操作 ListEmpty(
11、 L )线性表判空ListLength( L )求线性表的长度PriorElem( L, cur_e, pre_e )求数据元素的前驱Ne_tElem( L, cur_e, ne_t_e )求数据元素的后继GetElem( L, i, e )求线性表中某个数据元素LocateElem( L, e, pare( ) )定位函数ListTraverse(L, visit( )遍历线性表加工型操作 ClearList( L )线性表置空PutElem( L, i, e )改变数据元素的值ListInsert( L, i, e )插入数据元素ListDelete(L, i, e) 删除数据元素2.1.
12、2举例 约10min 两个线性表合并LA和LB 2.2 线性表的顺序表示和实现 2.2.1顺序映象 约15min 以 _ 的存储位置和 y 的存储位置之间某种关系表示逻辑关系。最简单的一种顺序映象方法是:令y的存储位置和_的存储位置相邻。线性表的根本操作在顺序表中的实现 InitList(L) / 构造初始化 LocateElem(L, e, pare) / 查找 ListInsert(L, i, e) / 插入元素 ListDelete(L, i) / 删除元素 2.1.1、线性表操作 约20min ListInsert(L, i, e)的实现:首先分析p 插入元素时,线性表的逻辑构造发生什
13、么变化? 线性表操作 ListDelete(L, i, e)的实现:首先分析p :删除元素时,线性表的逻辑构造发生什么变化?线性表类型的实现 2.1.2、线性表顺序存储构造的特点:约20min 它是一种简单、方便的存储方式。它要求线性表的数据元素依次存放在连续的存储单元中,从而利用数据元素的存储顺序表示相应的逻辑顺序,这种存储方式属于静态存储形式。暴露的问题 (1)在做插入或删除元素的操作时,会产生大量的数据元素挪动;(2)对于长度变化较大的线性表,要一次性地分配足够的存储空间,但这些空间常常又得不到充分的利用;(3)线性表的容量难以扩大。三、小结 约5min 1.理解线性表的逻辑构造特性是数
14、据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储构造是顺序存储构造和链式存储构造。用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表。2.纯熟掌握这两类存储构造的描绘方法,以及线性表的各种根本操作的实现。课 时 授 课 计 划 2022-20_学年第 二 学期第2周 授 课 日 期 3月 3 日 星期 月 日 星期 月 日 星期 月 日 星期 月 日 星期 班 级 信管10-1 根本课题 线性表的链式表示和实现 一元多项式的表示及相加 教学目的与要求:1、掌握线性链表、单链表、静态链表的概念、表示及实现方法。2、掌握循环链表的概念 3、掌握双向链表的表示与实现 教学重
15、点:1、线性链表之单链表的表示及实现方法。2、双向链表的表示与实现 教学难点:1、线性链表 2、双向链表的存储表示 作业及参考书:写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不一样。数据构造算法实现及解析/高一凡 编著 教具:多媒体 板书 课堂类型:讲授 教学过程:复习引入展开举例小结作业 一、复习 约5min 复习线性表有的概念 二、引入 约2min 由线性表的表示不方便引入 三、讲课进程设计 2.3 线性表的链式表示和实现 线性表顺序存储构造的特点:约10min 它是一种简单、方便的存储方式。它要求线性表的数据元素依次存放在连续的存储单元中,从而利用数据元素的存储顺序表示
16、相应的逻辑顺序,这种存储方式属于静态存储形式。暴露的问题 (1)在做插入或删除元素的操作时,会产生大量的数据元素挪动;(2)对于长度变化较大的线性表,要一次性地分配足够的存储空间,但这些空间常常又得不到充分的利用;(3)线性表的容量难以扩大。2.3.1、单链表 约10min 用一组地址任意的存储单元存放线性表中的数据元素这组存储单元可以是连续的也可以是不连续的。2.3.2、结点和单链表的 C 语言描绘 约10min 2.3.3、单链表操作的实现 约13min 因此生成链表的过程是一个结点“逐个插入”的过程。操作步骤:1、建立一个“空表”;2、输入数据元素an,建立结点并插入;3、输入数据元素a
17、n-1,建立结点并插入;4、依次类推,直至输入a1为止。2.3.4、其它形式的链表 约5min 1.循环链表2.双向链表 2.3.5、有序表类型 约5min 2.4一元多项式的表示 2.4.1一元多项式 约20min 在计算机中,可以用一个线性表来表示: P = (p0, p1, ,pn) 抽象数据类型一元多项式的定义如下:ADT Polynomial 数据对象:D ai| aiTermSet,i=1,2,m, m0 TermSet 中的每个元素包含一个 表示系数的实数和表示指数的整数 数据关系:R1 |ai-1 ,aiD, i=2,n 且ai-1中的指数值ai中的指数值 根本操作:Creat
18、Polyn ( P, m ) 操作结果:输入 m 项的系数和指数, 建立一元多项式 P。DestroyPolyn ( P ) 初始条件:一元多项式 P 已存在。操作结果:销毁一元多项式 P。PrintPolyn ( P ) 初始条件:一元多项式 P 已存在。操作结果:打印输出一元多项式 P。PolynLength( P ) 初始条件:一元多项式 P 已存在。操作结果:返回一元多项式 P 中的项数。AddPolyn ( Pa, Pb ) 初始条件:一元多项式 Pa 和 Pb 已存在。操作结果:完成多项式相加运算,即:Pa = PaPb,并销毁一元多项式 Pb。SubtractPolyn ( Pa
19、, Pb ) ADT Polynomial 2.4.2一元多项式的实现:约10min typedef OrderedLinkList polynomial; / 用带表头结点的有序链表表示多项式 四、小结约5min 1.可以从时间和空间复杂度的角度综合比拟线 性表两种存储构造的不同特点及其适用场合。五、本章作业:约5min 写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不一样。此题可以这样考虑,先取开场结点中的值,将它与其后的所有结点值一一比拟,发现一样的就删除掉,然后再取第二结点的值,重复上述过程直到最后一个结点。课 时 授 课 计 划 2022-20_学年第 一 学期第3周
20、 授 课 日 期 9月22日 五 星期 月 日 星期 月 日 星期 月 日 星期 月 日 星期 班 级 信管10-1 根本课题栈栈的应用举例 教学目的与要求:1、 栈的数据类型定义 2、 栈的顺序存储与实现 3、 掌握栈的应用方法,理解栈的重要作用 教学重点:1、栈的顺序存储表示与实现方法 2、利用栈实现行编辑、利用栈实现表达式求值 教学难点:1、栈的定义 2、利用栈实现表达式求值 作业及参考书:1、栈定义的应用 2、栈的特点 数据构造算法实现及解析/高一凡 编著 教具:多媒体 板书 课堂类型:讲授 教学过程:引入展开举例小结作业 一、引入约10min 1.什么是线性构造? 2.以餐馆中一叠一
21、叠的盘子的使用为例,引出栈的特点。二、讲课进程设计 3.1 栈的类型定义3.1.1、栈、栈顶、栈底(bottom)的定义约10min 3.1.2栈的类型定义约10min 3.2 栈的应用举例 例一、 数制转换 约10min 十进制数N和其他d进制数的转换是计算机实现计算的根本问题,个简单算法基于以下原理:N = (N div d)d + N mod d (其中:div为整除运算,mod为求余运算) 例二、 括号匹配的检验 约10min 检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描绘。三种情况对应到栈的操作即为:1和栈顶的左括弧不相匹配;2栈中并没有左括弧等在哪里;3栈中还有左括弧没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构C语言版 数据结构 语言版 教案
限制150内