《数据结构C语言版》教案Word格式文档下载.docx
《《数据结构C语言版》教案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《数据结构C语言版》教案Word格式文档下载.docx(51页珍藏版)》请在冰豆网上搜索。
1.2基本概念和术语1.1.1、数据与数据结构约20min数据:
是对客观事物的符号表示。
所有能被输入到计算机中,且能被计算机处理的符号的集合。
是计算机操作的对象的总称。
是计算机处理的信息的某种特定的符号表示形式。
数据元素:
是数据(集合)中的一个“个体”,是数据结构中讨论的基本单位。
数据对象:
是性质相同的数据元素的集合,是数据的一个子集。
数据结构:
是相互之间存在一种或多种特定关系的数据元素的集合。
这种集合称为结构。
数据的逻辑结构可归结为以下四类:
种类特征示例集合元素间为松散的关系线性结构元素间为严格的一对一关系如上面的成绩表中各元素树形结构元素间为严格的一对多关系图状结构(或网状结构)
元素间为多对多关系数据结构的形式定义为:
数据结构是一个二元组数据的存储结构:
——逻辑结构在存储器中的映像数据元素的映象方法:
计算机中存储信息的最小单位:
位,8位为一字节,两个字节为一字,字节、字或更多的二进制位可称为位串。
在逻辑描述中,把位串称为元素或结点。
关系的映象方法:
顺序映象链式映象1.2.2、数据类型约5min数据类型是一个值的集合和定义在此集合上的一组操作的总称。
1.2.3、抽象数据类型约20min是指一个数学模型以及定义在此数学模型上的一组操作。
关键:
使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。
定义它的人同样不必要关心它如何存储。
抽象数据类型表示法:
三元组表示:
(D,S,P)
其中D是数据对象,S是D上的关系集,P是对D的基本操作集。
书中的定义格式:
ADT抽象数据类型名{
<
数据对象的定义>
数据关系:
数据关系的定义>
基本操作:
基本操作的定义>
}ADT抽象数据类型名ADT有两个重要特征:
数据抽象数据封装四、本次课小结:
约3min1.熟悉各名词2.术语的含义3.掌握基本概念五、作业约2min2、什么是数据结构?
课时授课计划2011-2012学年第二学期第1周授课日期2月24日星期5月日星期月日星期月日星期月日星期班级信管10-1基本课题抽象数据类型的表示与实现算法和算法分析教学目的与要求:
类C语言的各种句型及算法描述的规范教学重点:
类C语言的各种句型及算法描述的规范教学难点:
类C语言的各种句型及算法描述的规范作业及参考书:
讲授教学过程:
复习——引入——展开——举例——小结——作业一、复习:
约5min1、数据结构的基本概念2、一些基本术语二、引入约2min由程序设计过程遇到的问题引入三、讲课进程设计1.3抽象数据类型的表示与实现1.3.1基本操作:
约15minAssignComplex(&
Z,v1,v2)操作结果:
构造复数Z,其实部和虚部分别被赋以参数v1和v2的值。
DestroyComplex(&
Z)操作结果:
复数Z被销毁。
GetReal(Z,&
realPart)初始条件:
复数已存在。
操作结果:
用realPart返回复数Z的实部值。
GetImag(Z,&
ImagPart)初始条件:
用ImagPart返回复数Z的虚部值。
Add(z1,z2,&
sum)初始条件:
z1,z2是复数。
用sum返回两个复数z1,z2的和值。
1.3.2对本书所采用的类C语言作简要说明约18min1.预定义常量及类型2、数据结构的存储结构typedef3、算法描述为以下的函数形式:
4.在算法描述中可以使用的赋值语句形式有:
5.在算法描述中可以使用的选择结构语句形式有:
6.在算法描述中可以使用的循环结构语句形式有:
7.在描述算法中可以使用的结束语句形式有:
8.在算法描述中可以使用的输入输出语句形式有:
9.在算法描述中使用的注释格式为:
10.在算法描述中可以使用的扩展函数有:
11.逻辑运算约定1.4算法和算法分析1.4.1、算法约10min算法是为了解决某类问题而规定的一个有限长的操作序列。
一个算法必须满足以下五个重要特性:
1.有穷性2.确定性3.可行性4.有输入5.有输出1.4.2、算法设计的原则约10min设计算法时,通常应考虑达到以下目标:
1.正确性2.可读性3.健壮性4.高效率与低存储量需求1.4.3、算法效率的衡量方法和准则约20min通常有两种衡量算法效率的方法事后统计法缺点:
1.必须执行程序2.其它因素掩盖算法本质事前分析估算法和算法执行时间相关的因素:
1.算法选用的策略2.问题的规模3.编写程序的语言4.编译程序产生的机器代码的质量5.计算机执行指令的速度算法=控制结构+原操作(固有数据类型的操作)
一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。
在计算时间复杂度时所采用的记号“O”是数学符号,其严格的数学定义是:
若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数c和n0,使得当n>
=n0时都满足0=
1.执行一条读写或赋值语句用O
(1)时间2、依次执行一系列语句所用时间用和准则3、判断语句的耗时主要是执行语句所用的时间,检验条件还需O
(1)4、循环语句的运行时间为多次叠代中执行循环体以及检验循环条件的耗时,常用乘法准则若算法的两个部分的时间复杂度为T1(n)=o(f(n))和T2(n)=o(g(n))则大“O”下的:
求和准则为T1(n)+T2(n)=O(max(f(n),g(n))乘法准则为T1(n)*T2(n)=O((f(n)*g(n))1.4.4、算法的存储空间需求约10min算法的空间复杂度定义为:
S(n)=O(g(n))表示随着问题规模n的增大,算法运行所需存储量的增长率与g(n)的增长率相同。
算法的存储量包括:
1.输入数据所占空间2.程序本身所占空间3.辅助变量所占空间四、小结:
约5min1.理解算法五个要素的确切含义。
2.掌握计算语句频度和估算算法时间复杂度的方法。
五、作业约5min1、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…anxn的值Pn(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。
注意:
本题中的输入ai(i=0,1,…,n),x和n,输出为Pn(x0).通常算法的输入和输出可采用下列两种方式之一:
•
(1)通过参数表中的参数显式传递;
(2)通过全局变量隐式传递。
•试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。
课时授课计划2011-2012学年第二学期第2周授课日期2月27日星期月日星期月日星期月日星期月日星期班级信管10-1基本课题线性表的类型定义线性表的顺序表示和实现教学目的与要求:
1、掌握线性表的概念和类型定义2、掌握线性表的顺序表示和实现方法教学重点:
线性表的类型定义线性表的顺序表示和实现方法教学难点:
线性表的类型定义线性表的顺序存储的实现方法作业及参考书:
复习——引入——展开——举例——小结一、引入约3min由顺序的算法引入二、讲课进程设计2.1线性表的类型定义12.1.1线性表的定义约27min线性表是由n(n≥0)个类型相同的数据元素组成的有限序列。
抽象数据类型线性表的定义如下:
ADTList{数据对象D={ai|ai∈ElemSet,i=1,2,...,n,n≥0}{称n为线性表的表长;
称n=0时的线性表为空表。
}数据关系R1={|ai-1,ai∈D,i=2,...,n}基本操作:
结构初始化操作:
InitList(&
L)操作结果:
构造一个空的线性表L。
结构销毁操作:
DestroyList(&
L)初始条件:
线性表L已存在。
销毁线性表L。
引用型操作ListEmpty(L)(线性表判空)
ListLength(L)(求线性表的长度)
PriorElem(L,cur_e,&
pre_e)(求数据元素的前驱)
NextElem(L,cur_e,&
next_e)(求数据元素的后继)
GetElem(L,i,&
e)(求线性表中某个数据元素)
LocateElem(L,e,compare())(定位函数)
ListTraverse(L,visit())(遍历线性表)
加工型操作ClearList(&
L)(线性表置空)
PutElem(&
L,i,&
e)(改变数据元素的值)
ListInsert(&
L,i,e)(插入数据元素)
ListDelete(&
e)(删除数据元素)
2.1.2举例约10min两个线性表合并LA和LB2.2线性表的顺序表示和实现2.2.1顺序映象约15min——以x的存储位置和y的存储位置之间某种关系表示逻辑关系。
最简单的一种顺序映象方法是:
令y的存储位置和x的存储位置相邻。
线性表的基本操作在顺序表中的实现InitList(&
L)//结构初始化LocateElem(L,e,compare())//查找ListInsert(&
L,i,e)//插入元素ListDelete(&
L,i)//删除元素2.1.1、线性表操作约20minListInsert(&
L,i,e)的实现:
首先分析插入元素时,线性表的逻辑结构发生什么变化?
线性表操作ListDelete(&
e)的实现:
首先分析:
删除元素时,线性表的逻辑结构发生什么变化?
线性表类型的实现2.1.2、线性表顺序存储结构的特点:
约20min它是一种简单、方便的存储方式。
它要求线性表的数据元素依次存放在连续的存储单元中,从而利用数据元素的存储顺序表示相应的逻辑顺序,这种存储方式属于静态存储形式。
暴露的问题
(1)在做插入或删除元素的操作时,会产生大量的数据元素移动;
(2)对于长度变化较大的线性表,要一次性地分配足够的存储空间,但这些空间常常又得不到充分的利用;
(3)线性表的容量难以扩充。
三、小结约5min1.了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。
用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表。
2.熟练掌握这两类存储结构的描述方法,以及线性表的各种基本操作的实现。
课时授课计划2011-2012学年第二学期第2周授课日期3月3日星期月日星期月日星期月日星期月日星期班级信管10-1基本课题线性表的链式表示和实现一元多项式的表示及相加教学目的与要求:
1、掌握线性链表、单链表、静态链表的概念、表示及实现方法。
2、掌握循环链表的概念3、掌握双向链表的表示与实现教学重点:
1、线性链表之单链表的表示及实现方法