数据结构PPT第五章.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构PPT第五章

第五章 数 组 内容提要 数组的定义、表示与实现 矩阵的压缩存储 特殊矩阵 稀疏矩阵 数组基本定义 P91 数组的维数一旦被定义,就不再改变 二维数组也可以看作元素类型为一维数组的一维数组类型 数组的顺序存储方式 由于存储单元是一维的结构,而数组是个多维的结构,那么用一组连续存储单元存放数组的元素时,映射问题是关键。 行优先存储:将数组按行向量排列,即第i+1行紧接在第i行后。(C语言采用这种方式) 列优先存储:将数组元素按列向量排列。 数组元素的存储地址★ P92 二维数组(m*n) Loc(i,j)=Loc(0,0) + (i*n + j)*s 0i≤m-1, 0j≤n-1 (适用于数组下标规定从0起始的编程语言) 三维数组(m*n*p) Loc[i][j][k]=Loc[0][0][0] + (i*(n*p) + j*p + k)*s 0i≤m-1, 0j≤n-1,0k≤p-1 下面是数组的顺序存储表示和实现 typedef struct { //数组元素基址,由InitArray函数来分配 ElemType *base; //数组维数 int dim; //数组维界基址,存放每一维的长度 int *bounds; //数组映象函数常量基址,由InitArray分配 int *constants; } Array; 数组的操作 数组除了结构的初始化和销毁操作之外,只有两个操作: 给定一组下标,读取相应的数据元素   GetValue(A, e, i, j) 给定一组下标,修改相应数据元素中的某一个或几个数据项的值   ChangeValue(A, e, i, j) 矩阵的压缩存储 矩阵是很多科学与工程计算问题中研究的数学对象。如何存储矩阵的元,从而使矩阵的各种运算能有效地进行?这是很重要的。 为了节约矩阵存储的空间,往往对一些特殊矩阵进行压缩存储——多个值相同的元只分配一个存储空间;对零元不分配空间 矩阵常识 特殊矩阵——数值相同的元素或零元素在矩阵中的分布有一定规律 对称矩阵:两种对称方向 下/上三角矩阵:右上/左下三角(不包括对角线)中的元均为常数或0 稀疏矩阵 稀疏因子= 非0元的个数 /(m × n) 当稀疏因子≦0.05时的矩阵被称为稀疏矩阵 对称矩阵的压缩存储 对称矩阵的特点: aij= aji (1=i,j=n) 稀疏矩阵的存储 定义:如果一个m*n的矩阵中非零元素比零元素的个数少得多,且非零元素的分布没有规律 压缩存储:只存储非零元素 由一个三元组能够惟一确定矩阵的每个非零元——三元组顺序表 稀疏矩阵的转置运算 对于一个m*n的矩阵M,它的转置矩阵T是一个n*m的矩阵 转置方法: ( 算法5.1) 矩阵行列值转换,原有的m*n矩阵M要变为n*m的矩阵T。 每个三元组中的row和col位置互换,即原来的Ai j对应Bj i 三元组A的排列是以原矩阵的行号为主序,而三元组B是以原矩阵的列为排列顺序 十字链表 当矩阵的非零元个数和位置在操作(即矩阵运算)过程中变化较大时,就不宜采用顺序存储结构来表示三元组的线性表。 例如,在作“将矩阵B加到矩阵A上”的操作时,由于非零元的添加或正负抵消归零等将会引起A.data中元素值的变动。为此,对这种类型的矩阵,采用链式存储结构表示三元组的线性表更为恰当。 每个非零元可用一个含五个域的结点表示 其中row,col和val三个域分别表示该非零元所在的行、列和非零元的值 向右域right用以链接同一行中下一个非零元 向下域down用以链接同一列中下一个非零元。 两个矩阵相加和第二章中讨论的两个一元多项式相加极为相似。不同的是一元多项式中只有一个变元(即指数项),而矩阵中每个非零元有两个变元(行值和列值),每个结点既在行表中又在列表中,致使插入和删除时指针的修改稍为复杂,故需更多的辅助指针。 内容复习 二维数组存储地址的公式求法 特殊矩阵(对称矩阵)存储的公式计算,及相关算法 稀疏矩阵的三元组表示和十字链表的表示 思考? 数组A中,每个元素占的字节数为3个字节,行下标从1到8,列下标从1到10,从首地址SA开始,连续存放在存储器中,该数组按行存放时,元素A[8][5]的起始地址为() A. SA+140 B. SA+144 C. SA+222 D. SA+225 * * Typedef elemtype

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档