数组和广义表1数组的定义课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数组和广义表1数组的定义课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 广义 定义 课件
- 资源描述:
-
1、第第5章章 数组和广义表数组和广义表5 51 1数组的定义数组的定义 二维数组:二维数组:我们可以把二维数组看成是这样一个定长线性表:我们可以把二维数组看成是这样一个定长线性表:它的每个数据元素也是一个定长线性表。例如。图它的每个数据元素也是一个定长线性表。例如。图51 数组一旦被定义,它的维数和维界就不再改变。因此,除了结构的初始化和销数组一旦被定义,它的维数和维界就不再改变。因此,除了结构的初始化和销毁之外,数组只有存取元素和修改元素值的操作。毁之外,数组只有存取元素和修改元素值的操作。52数组的顺序表示和实现数组的顺序表示和实现一采用顺序存储结构:一采用顺序存储结构:一般不作插入或删除操
2、作一般不作插入或删除操作,因此,采用顺序存储结构因此,采用顺序存储结构二存储顺序:二存储顺序:存储单元是一维的结构,数组是个多维的结构,用一组连续存储单元存放存储单元是一维的结构,数组是个多维的结构,用一组连续存储单元存放数组的数据元素就有次序约定问题。数组的数据元素就有次序约定问题。对二维数组可有两种存储方式:对二维数组可有两种存储方式:1以列序为主序以列序为主序(co1umn major order)的存储方式,的存储方式,如图如图52(a)所示所示2以行序为主序以行序为主序(row major order)的存储方式,的存储方式,如图如图52(b)所示。所示。三元素存储位置计算:三元素存
3、储位置计算:以行序为主序的二维数组存储结构为例以行序为主序的二维数组存储结构为例:二维数组二维数组A中任一元素中任一元素aij的存储位置可由下式确定的存储位置可由下式确定 LOC(i,j)LOC(0,0)十十(b2i十十j)L (5-1)式中:式中:b2是数组的第二维长度,即列数;是数组的第二维长度,即列数;L是每个数据元素占的存储单元个数;是每个数据元素占的存储单元个数;LOC(i,j)是是aij的存储位置;的存储位置;LOC(0,0)是是a00的存储位置,即二维数组的存储位置,即二维数组A的基地址的基地址或基址。或基址。由于计算各个元素存储位置的时间相等,所以存取由于计算各个元素存储位置的
4、时间相等,所以存取数组中任一元素的时间也相等。我们称具有这一特点数组中任一元素的时间也相等。我们称具有这一特点的存储结构为随机存储结构。的存储结构为随机存储结构。53矩阵的压缩存储矩阵的压缩存储压缩存储是指:压缩存储是指:为多个值相同的元只分配一个存储空间;为多个值相同的元只分配一个存储空间;对零元不分配空间。对零元不分配空间。531 特殊矩阵:特殊矩阵:一对称矩阵:一对称矩阵:1特点:特点:aij=aji 1i,jn2存储:可压缩存储,不失一般性,以行主序存储下存储:可压缩存储,不失一般性,以行主序存储下 三角中的元(包括对角线上的元)。三角中的元(包括对角线上的元)。3映像关系:映像关系:
5、以数组以数组san(n+1)/2存储存储n阶对称矩阵阶对称矩阵A,)35(12)1(12)1(jiijjjijiik当当称称san(n+1)/2为为n阶对称矩阵阶对称矩阵A的压缩存储。(图的压缩存储。(图5.3)则则sak和矩阵元和矩阵元aij间关系:间关系:二三角矩阵:二三角矩阵:1特点:下特点:下(上上)三角矩阵指矩阵的上三角矩阵指矩阵的上(下下)三角三角(不包括不包括 对角线对角线)中的元均为常数中的元均为常数c或零的或零的n阶矩阵。阶矩阵。2存储:存储其下存储:存储其下(上上)三角中的元和常数三角中的元和常数c。3映像关系:映像关系:以数组以数组san(n+1)/2存储,存储,sa0可
6、用来存储常数可用来存储常数cjijijiik当当下三角行主序:02)1(jiijjjik当当上三角列主序:2)1(0三对角矩阵:三对角矩阵:1特点:特点:所有的非零元都集中在以主对角线为中心的带状区域中。所有的非零元都集中在以主对角线为中心的带状区域中。如图如图54所示。所示。2存储:亦可按某个原则存储:亦可按某个原则(或以行为主,或以对角线的顺或以行为主,或以对角线的顺序序)将其压缩存储到一维数组上。将其压缩存储到一维数组上。532 稀疏矩阵:稀疏矩阵:一什么是稀疏矩阵:一什么是稀疏矩阵:二抽象数据类型稀疏矩阵的定义:(二抽象数据类型稀疏矩阵的定义:(P96)三稀疏矩阵压缩存储:只存非零元。
7、以图三稀疏矩阵压缩存储:只存非零元。以图5.5矩阵为例矩阵为例1三元组顺序表:三元组顺序表:#define MAXSIZE 12500 /稀疏矩阵中非稀疏矩阵中非0元素的最大数目元素的最大数目typedef struct int i,j;/非非0元素的行号、列号元素的行号、列号ElemType e;/非非0元素的值元素的值Triple;/三元组数据类型名三元组数据类型名typedef struct int mu,nu,tu;/稀疏矩阵的行数、列数、非稀疏矩阵的行数、列数、非0元素的数目元素的数目Triple dataMAXSIZE+1;/三元组数组,三元组数组,data0未用未用 TSMatr
8、ix;/三元组顺序表数据类型名三元组顺序表数据类型名矩阵转置运算:矩阵转置运算:(1)将矩阵的行列值相互交换;将矩阵的行列值相互交换;(2)将每个三元组中的将每个三元组中的i和和j相互调换;相互调换;(3)重排三元组之间的次序。重排三元组之间的次序。实现第三条有两种处理方法:实现第三条有两种处理方法:(1)(1)按照按照b.data中三元组的次序依次在中三元组的次序依次在a.data中找到相应中找到相应的三元组进行转置。的三元组进行转置。1 2 121 3 93 1 -33 6 144 3 245 2 186 1 156 4 -71 3 -31 6 152 1 122 5 183 1 93 4
9、 244 6 -76 3 14算法算法5.1:Status TransposeSMatrix(TSMatrix M,TSMatrix&T)/M为原三元组顺序表,行优先顺序为原三元组顺序表,行优先顺序T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;if(!M.tu)return FALSE;/三元组空三元组空 q=1;for(col=1;col=M.nu;col+)for(p=1;k=M.tu;+p)if(M.datap.j=col)T.dataq.i=M.datap.j;T.dataq.j=M.datap.i;T.dataq.e=M.datap.e;q+;return OK;这个算
10、法主要的工作是在这个算法主要的工作是在p和和col的两重循环中完成的,的两重循环中完成的,故算法的时间复杂度为故算法的时间复杂度为O(nutu),即和,即和M的列数和非的列数和非零元的个数的乘积成正比。一般矩阵的转置算法为零元的个数的乘积成正比。一般矩阵的转置算法为 for(col1;col=nu;+col for(row1;row=mu;+row Tcol rowMrowcol;其时间复杂度为其时间复杂度为O(munu)。当非零元的个数。当非零元的个数tu和和munu同数量级时,算法同数量级时,算法51的时间复杂度就为的时间复杂度就为O(munu2)了了(例如,假设在例如,假设在100500
展开阅读全文