




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数组和广义表(4学时)(一)教学目的: 掌握数组的定义及顺序表示与实现;掌握矩阵的压缩存储;广义表的定义及存储结构。(二)教学重点:1、数组的定义及其存储2、特殊矩阵的压缩存储3、稀疏矩阵逻辑结构和存储结构4、广义表的逻辑结构和存储结构5、数组和广义表的操作应用举例(三)教学难点:1、矩阵的压缩存储2、广义表的存储结构51数组的定义一、数组的抽象类型定义:数据对象:D= |n(0)称为数组的维数,bi是数组第i维的长度,ji是数组元素的第i维下标,ElemSet数据关系:R=R1,R2,Rn Ri= 0jkbk-1,1kn且ki,0jibi-2,D,I=2,n二、数组基本操作:1、InitArray(&A,n,bound1,boundn)操作结果:若维数n和各维长度合法,则构造相应的数组A,并返回OK。2、DestroyArray(&A)操作结果:销毁数组A。3、Value(A,&e,indeex1,indexn)初始条件:A是n维数组,e为元素变量,随后是n个下标值。操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返回OK。4、Assign(&A,e,index1,indexn)初始条件:A是n维数组,e为元素变量,随后是n个下标值。操作结果:若下标不超界,则将e的值赋给所指定的A的元素,并返回OK。三、数组与线性表的关系:1、二维数组与线性表的关系:以把二维数组看成是这样一具定长线性表:它的每个数据元素也是一个定长线性表。A=(a0,a1,ap) (p=m-1或n-1)其中每个数据元素aj是一个列向量形式的线性表aj=(a0j,aij,am-1j) 0jn-1ai=(ai0,ai1,ai,n-1) 0im-1在C语言中,一个二维数组类型可以定义为其分量类型为一维数组类型的一维数组类型,也就是说,typedef ElemType Array2mn;等价于 typedef ElemType Array1n;typedef Array1 Array2m;(a) (b) (C )图51二维数组图例(a)矩阵形式表示;(b)列向量的一维数组;(c)行向量的一维数组2、n维数组与线性表的关系:同理,一个n维数组类型可以定义为其数据元素为n-1维数组类型的一维数组类型。四、数组的基本操作数组一旦被定义,它的维数和维界就不再改变。因此,除了结构的初始化和销毁之外,数组只有存取元素和修改元素值的操作。52数组的顺序表示和实现一、二维数组的顺序存储:则用一组连续存储单元存放数组的数据元素就有个次序约定问题。对二维数组可有两种存储方式:在扩展BASIC、PL/1、COBOL、PASCAL和C语言中,用的都是以行序为主序的存储结构,而在FORTRAN语言中,用的是以列序为主序的存储结构。(a) 以列序为主序 (b)以行序为主序图5.2 二维数组的两种存储结构二、数组的地址计算:1、二维数组的地址计算:假设每个数据元素占L个存储单元,则二维数组A中任一元素aij的存储位置可由下式确定LOC(i,j)=LOC(0,0)+(b2i+j)L (51)式中,LOC(i,j)是aij的存储位置;LOC(0,0)是a00的存储位置,即二维数组A的起始存储位置,也称为基地址或基址。2、n维数组地址计算:LOC(j1,j2,jn)=LOC(0,0,0)(b2bnj1b3bnj2bnjn-1jn)L=LOC(0,0,0)()L或缩写成LOC(j1,j2,jn)=LOC(0,0,0)+ (52)其中Cn=L,ci-1=bici, 1j=j; p-e=e;if(M.rheadpi=NULLp-right=M.rheadi;M.rheadi=p; else /寻查在行表中的插入位置 for (q=M.rheadi;(q-right)&q-right-jj; q=q-right);else /寻查在列表中的插入位置 for(q=M.cheadj;(q-down)&. Q-down-iI; q=q-down); p-down=q-down; q-=down=p; / 完成列插入 return OK;/CreateSMatrix.OL算法 5.45.4 广义表的定义顾名思议,广义表是线性表的推广。也有人称其为列表(lists,用复数形式以示与统称的表list的区别)。广泛地用于人工智能等领域的表处理语言LISP语言,把广义表作为基本的数据结构,就连程序也表示为一系列的广义表。一、广义表的定义:1、抽象数据类型定义:ADT GList 数据对象:D=数据关系:R1=ei-1,ei| ei-1, ei D, 2in2、广义表的表示:广义表一般记作 LS=(1,2,n)其中,LS是广义表(1,2,n)的名称,n是它的长度。可以是单个元素,也可是广义表,分别称为广义表LS的原子和子表。习惯上,用大写字母表示广义表的名称,用小写字母表示原子。当广义表LS非空时,称第一个元素为LS的表头(Head),称其余元素组成的表(2,3,n)是LS的表尾(Tail)。3、广义表的举例:(1)A=()A是一个空表,它的长度为零。(2)B=(e)列表B只有一个原子e,B的长度为1。(3)C=(a,(b,c,d))列表C的长度为2,两个元素分别为原子和子表(b,c,d)。(4)D=(A,B,C)列表D的长度为3,3个元素都是列表。显然,将子表的值代入后,则有D=(),(e),(a,(b,c,d)。(5)E=(a,E)这是一个递归的表,它的长度为2。E相当于一个无限的列表E=(a,(a,a,))。二、表头函数 head()和表尾函数tail():根据前述对表头、表尾的定义可知:任何一个非空列表其表头可能是原子,也可能是列表,而其表尾必定为列表。例如:GetHead(B)=e, GetTail(B)=(),GetHead(D)=A, GetHead(D)=(B,C)由于(B,C)为非空列表,则可继续分解得到:GetHead(B,C)=B, GetHead(B,C)=C,值得提醒的是列表()和()不同。前者为空表,长度n=0;后者长度n=1,可分解得到其表头、表尾均为空表()。图5.7 列表的图形表示5.5广义表的存储结构一、广义表结点的设定:两种结构的结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年短视频平台内容风险识别与防范策略研究报告
- 现场发泡包装机知识培训课件
- 2025年基因治疗药物临床研发人才需求分析:市场前景与人才培养报告
- 吉林省永吉县实验高级中学2026届化学高二上期中监测试题含解析
- 炮车中学2026届高三上化学期中学业水平测试模拟试题含解析
- 2026届山西省大同市铁路一中高一化学第一学期期中联考试题含解析
- 2025年注册环保工程师考试 环境保护与可持续发展专项训练试卷
- 2025年注册化工工程师考试化工原理专项训练试卷:巩固化工基础知识
- 2026届浙江省温州树人中学高二化学第一学期期末教学质量检测试题含答案
- 民法典普法课件
- 职业道德与法治中职PPT完整全套教学课件
- 惠州卫生职业技术学院工作人员招聘考试真题2022
- 三级创业指导师考试复习题库(500题)
- 2022年北京语言大学各单位新编长聘人员招聘需求笔试备考题库及答案解析
- 部编版小学语文四年级上册课程纲要
- GB/T 31997-2015风力发电场项目建设工程验收规程
- HG20615-RF法兰标准尺寸
- 三尖瓣下移畸形(Ebstein畸形)
- 计算机组装与维护完整版课件(全)
- 一键自动生成spccpkMSAPPK数据工具
- (知识扩展)城市轨道交通CBTC系统功能课件
评论
0/150
提交评论