《数据结构[Python语言描述]》教案第9课数组和广义表(5.1-5.3).docx
《《数据结构[Python语言描述]》教案第9课数组和广义表(5.1-5.3).docx》由会员分享,可在线阅读,更多相关《《数据结构[Python语言描述]》教案第9课数组和广义表(5.1-5.3).docx(9页珍藏版)》请在三一办公上搜索。
1、课题第9课数组和广义表(5.153)课时2课时(90min)教学目标知识目标:(1)理解数组的定义及基本操作(2)掌握数组的顺序存储结构(3)掌握特殊矩阵和稀疏矩阵的压缩存储方法(4)了解广义表的定义、基本术语和基本操作(5)了解广义表的链式存储结构技能目标:(1)能独立分析问题并实现矩阵的压缩存储(2)能灵活运用数组解决较复杂的实际应用问题素质目标:培养勇于探索、知难而进的创新精神,增强民族自信心和自豪感教学重难点教学重点:数组的顺序存储结构、特殊矩阵和稀疏矩阵的压缩存储方法、广义表的基本术语和基本操作、广义表的链式存储结构教学难点:特殊矩阵和稀疏矩阵的压缩存储方法教学方法问答法、讨论法、i
2、并授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:如何理解数组?【学生】思考、举手回答传授新知【教师】通过学生的回答引入要讲的知识,介绍数组的定义、基本操作和顺序存储结构,矩阵的压缩存储,广义表的定义、基本术语、基本操作和链式存储结构5.1 数组概述5.1.1 数组的定义数组是n(nNl)个具有相同数据类型的数据元素的集合。数据元素在数组中的位置称为数据元素的下标,用户可以通过数据元素的下标直接获取数据元素。数据元素的下标可以由一个或多个整数构成,其中含有的整数个数称为数组的维
3、数。从逻辑结构上看,数组可以看作一般线性表的扩充.【教师】用多媒体展示“二维数组的表示形式”图,并介绍二维数组以二维数组4(数据元素的个数为,心)为例,其表示形式如图所示.Za0.0la0.n-%aU%1m-l.04hTJm-,nJ由图可以看出,二维数组中的每个数据元素均受两个关系的约束,且这两个关系都是线性关系。因此,可以将该二维数组看作一个由加个数据元素组成的线性表,表示为A=(a0tall-tal-tam)(Om-1)其中,每个数据元素a本身也是一个线性表,称为行向量,即a/=(a,;Ofa,;ia,)同理,也可以将该二维数组看作一个由n个数据元素组成的线性表,表示为B=(%b,向,力八
4、1)(011-l)其中,每个数据元素仇本身也是一个线性表,称为列向量,即H=(Ww,37)。【提示】数组是一组有固定个数的数据元素的集合,一旦定义了它的维数和各维的长度,数组中数据元素的个数就固定了。例如,二维数组A34的行长度和列长度分别为3和4,故数组中数据元素的个数为12。5.1.2数组的基本操作基本操作说明_init_0对数组进行初始化,即构造相应的存储空间destroyArray()销毁数组,释放存储空间getValue(e,index,indexn)用e返回数组中由下标indexiin加Xn所指定元素的值setValue(e,index,.,indexn)将数组中由下标index、
5、index”所指定元素的值置为e5.1.3数组的顺序存储结构由于数组的主要操作是存取数据元素值,一般不进行插入和删除操作,因此,数组通常采用M页序存储结构。【教师】随机邀请学生回答以下问题数组的顺序存储与顺序表有哪些相似之处?计【学生】聆听、思考、回答一维数组的Jl质序存储与顺序表类似,可以在确定起始地址(基地址)和数组中每个数据元素所占存储单元大小的情况下,计算出一维数组中任意一个数据元素的存储地址。二维数组须按某种存放次序将数据元素排成一个线性序列,然后将这个线性序列存放在存储器中。二维数组的顺序存储方式有两种,一种是按行序存储,另一种是按列序存储。【教师】用多媒体展示“二维数组按行序存储
6、和二维数组按列序存储”图(详见教材),并介绍二维数组存储方式假设每个数据元素占用攵个存储单元,Loc(两)为二维数组工行的起始地址(基地址),则二维数组按行序存储时,可以得到其中任意一个数据元素却的存储地址为1.oc(aj)=Loc(ao,o+(in+j)k(0WiVm,0?)其中,/表示数据元素即前面的行数;表示每行数据元素的个数;/表示在第/行中沏前面数据元素的个数。同理,二维数组按列序存储时,可以得到其中任意一个数据元素的的存储地址为1.oC(4j)=LoC(a()Q)+(/xi+i)x%(0im,0jn)其中.j表示数据元素前面的列数;,表示每列数据元素的个数;i表示在第列中如前面数据
7、元素的个数。【教师】随机邀请学生回答以下问题一维数组和二维数组有什么共同点?*【学生】聆听、思考、回答由上述分析可知,一维数组和二维数组均具有随机存取的特点。同理,多维数组也可以按照上述推导公式计算其数据元素的存储地址。【提示】许多高级程序设计语言都采用按行序存储二维数组,如Python.JBasic等.在Python中,一维数组通常采用a,faila,n-l的列表表示;二维数组通常采用aOQ,aO,l,.,aO,n-lLaLO,aLl,.,aLn-l,.,am-LO,am-LL,am-Ln-l的嵌套列表表示。【教师】讲解实例5-1(详见教材)5.2矩阵的压缩存储*【教师】随机邀请学生回答以下
8、问题为什么要对矩阵进行压缩存储?【学生】聆听、思考、回答在高级程序设计语言中,通常采用二维数组来存储矩阵。当矩阵中有许多值相同的非零元素或零元素时,如果仍采用普通的二维数组存储矩阵,将会造成存储空间的很大浪费。为了节省存储空间,可对矩阵中值相同的元素只分配一个存储空间,或对零元素不分配存储空间,这类方法称为矩阵的压缩存储。5.2.1特殊矩阵的压缩存储如果矩阵中非零元素或零元素的分布具有一定的规律,则称这类矩阵为特殊矩阵.【提示】对于一个m行n列的矩阵而言,当m=n时称为方阵。对称矩阵、三角矩阵和对角矩阵都属于方阵。1 .对称矩阵的压缩存储若n阶矩阵A满足ai,j=aj,i(Oin,Ojn)f则
9、称矩阵A为n阶对称矩阵。【教师】用多媒体展示n阶对称矩阵和“对称矩阵的压缩存储”图(详见教材),并介绍对称矩阵压缩存储特点由于对称矩阵中的元素关于主对角线对称,所以在存储对称矩阵时,只需按行序存储对称矩阵中下三角(包括对角线)的元素,使得对称的元素共享同一存储空间。这样就可以将直接采用二维数组存储对称矩阵时占用的个元素的存储空间压缩到a。+1)2个元素的存储空间,大大节省了存储空间。若用一维数组B=W作为阶对称矩阵A的存储结构,则矩阵A中任意元素W和B中元素儿之间的关系如下./i.j下三角(包括对角线)元素k=.&+iij(上三角元素)2 .三角矩阵的压缩存储若n阶矩阵A的下三角或上三角(不包
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构【Python语言描述 数据结构 Python 语言 描述 教案 数组 广义 5.1 5.3
链接地址:https://www.31ppt.com/p-7016913.html