- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 数组和广义表 数组描述 数组描述 关系集Row和Col表明:除数组A(2)周边元素外的其它任一个元素aij,有两个直接前驱ai-1j,aij-1,和两个直接后继ai+1j,aij+1 (周边元素的前驱或后继可不足两个)。n维数组也可按上述方法类似定义。 二维数组可如下描述: 多维数组是线性表的推广,而线性表是多维数组的特例。 5.1.1数组的抽象数据类型 数组的抽象数据类型 数组的存储映像 2.静态数组元素的地址计算 数组元素的地址计算 数组元素的地址计算 数组元素的地址计算 5.2 矩阵的压缩存储 特殊矩阵的压缩 特殊矩阵的压缩 特殊矩阵的压缩 5.3.1稀疏矩阵的压缩存储 1.三元组表 三元组表的转置 三元组表的转置 三元组表的转置 2.十字链表 十字链表 建立十字链表 建立十字链表 5.4广义表的定义及其操作 例5-5 广义表的例子 广义表的例子 5.5广义表的存储结构 广义表的存储 广义表的存储 广义表的存储 第五章小结 第五章习题 * 在线性表L=(a0 a1,……,an-1)中,元素ai是无结构的(称为原子或单元素),即ai本身不再是一个数据结构。本章的数组和广义表是线性结构的推广。在这种结构中,元素本身可以又是一个数据结构。本章讨论多维数组的表示、矩阵压缩存储、广义表的表示等问题。 5.1数组的定义及其操作 5.1.1 数组的定义 在算法语言中(如FORTRAN、PASCAL、C、Java等)都有数组类型。前面接触到的是一维数组,本节以C语言为例讨论多维数组,如多维数组的描述、存储映象、地址计算等问题。 设二维数组: 其中:m、n为行列数,aij为第i行、第j列的元素,0≤i≤m-1,0≤j≤n-1;元素个数为m×n。 二维数组可用形式化语言描述,即: A(2)=(D,R) 其中:D={aij|aij∈datatype,0≤i≤m-1, 0≤j≤n-1}; R={Row,Col} 行关系:Row={aij,aij+1|aij,aij+1∈D,0≤i≤m-1,0≤j≤n-2} 列关系:Col={aij,ai+1j|aij,ai+1j∈D,0≤i≤m-2,0≤j≤n-1} a00 a01 ……a0j …… a0n-1 …………………………………. ai0 ai1 …… aij ….… ain-1 …………………………. am-10 am-11 …am-1j … am-1n-1 A(2) = A[m][n] = A[0] … A[i] … A[m-1] = (A[0]………A[i]…….…A[m-1] )-----线性表形式 a00 a01 ……a0j …… a0n-1 …………………………………. ai0 ai1 …… aij ….… ain-1 …………………………. am-10 am-11 …am-1j … am-1n-1 A(2) = A[m][n] = 在算法语言中,数组一旦生成,其元素的存储空间就固定下来,故数组的运算一般不包括插入和删除这样的操作。 ADT Array{ D={aj1j2…jn|aj1j2…jn∈datatype,ji=0,…,bi-1其中i=1,2,…,n } n(n0)为数组维数,bi是第i维长度, ji是数组元素第i维下标。 R={R1,R2,…,Rn} 其中:Ri={aj1…ji…jn, aj1…ji+1…jn|0≤jk≤bk-1,1≤k≤n且k≠i,0≤ji≤bi-2,aj1…ji…jn, aj1…ji+1…jn∈D,i=1,2,…,n} P ArrayInit(A,n,d1,d2,......dn) 操作结果:若维数n和各维长度合法,则生成一个n维数组A[d1][d2].....[dn](C语言中,1≤n≤8)。 ArrayDestroy(A) 初始条件:数组A存在。操作结果:撤销数组A。 ArrayGet(A,i1,...,in,e) 初始条件:数组A存在,e∈datatype。操作结果:若各下标合法,则将元素A[i1][i2],...,[in]的值传给变量 e。 ArrayAssign(A,i1,...,in,e) 初始条件:数组A存在,e∈datatype。 操作结果:若各下标合法,则将变量 e的值传给数组元素A[i1][i2],...,[in]。 }ADT Array; 5.2 数组的存储结构 由于计算机的存储空间
您可能关注的文档
最近下载
- 2022东君照明集中控制系统用户手册.docx VIP
- 〖GB50011-2016〗建筑抗震设计规范(2016年版).docx VIP
- 《浙江省建设工程其他费用定额》(2018版).docx
- 怎样恢复已删除的文件.doc VIP
- 2025年中国铁道橡胶垫板数据监测报告.docx
- 2023-2024全国初中物理竞赛试题精选精编第05讲凸透镜成像(解析版).docx VIP
- 2001-2016年电子科技大学《601数学分析》历年考研真题汇总(含部分答案).pdf VIP
- 古典文献学第二章 文献的形成和流布.ppt VIP
- 2025年综合窗口岗位工作人员招聘考试笔试试题(附答案).docx VIP
- 纪念中国红军长征胜利89周年PPT课件.pptx VIP
文档评论(0)