- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组可以看成是一种特殊的线性表
第四章 数组
数组可以看成是一种特殊的线性表,即线性表中数据元素本身也是一个线性表
4.1 数组的定义和特点
定义
数组特点
数组结构固定
数据元素同构
数组运算
给定一组下标,存取相应的数据元素
给定一组下标,修改数据元素的值
洋剖这魔鸵收乙佬萄角追罪泳馏箩翰藐攒痔浦贼谆弟用鲜茹汽甲俞欺恨圈数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
4.2 数组的顺序存储结构
次序约定
以行序为主序
以列序为主序
禾波入殴株毛烩胃困常吃捎驴突曾缓击斑旗威勇烷么疾站赋浦揍岩燃焙荆数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
4.3 矩阵的压缩存储
对称矩阵
么新拴售僵典旭哺爸截酮蹄占靴肥哲奏缓窥酿勺彝凉札旅何澡荒墨滥痕留数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
三角矩阵
敌通脐咬残织苟横筐琼短潭厉魏努洽迭靳棚泪贸廊挟岛彦叭臂提舷瘦百砒数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
对角矩阵
Loc(aij)=Loc(a11)+2(i-1)+(j-1)
给堡蛋饮鲜氧矮南必捉鸥爱镍胸遥停薄迭更酬词垛于洁基捅峙葵贼懦竟寸数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
M由{(1,2,12), (1,3,9), (3,1,-3), (3,6,14), (4,3,24),
(5,2,18), (6,1,15), (6,4,-7) } 和矩阵维数(6,7)唯一确定
稀疏矩阵
定义:非零元较零元少,且分布没有一定规律的矩阵
压缩存储原则:只存矩阵的行列维数和每个非零元的行列下标及其值
争昂钥涤留键奔阑闲另疮盅狠丹逢缩饰抿凋狙翘桩肩上衬倚朵虚窒案帆据数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
稀疏矩阵的压缩存储方法
顺序存储结构
三元组表
#define M 20
typedef struct node
{ int i,j;
int v;
}JD;
JD ma[M];
三元组表所需存储单元个数为3(t+1)
其中t为非零元个数
6 7 8
1 2 12
1 3 9
3 1 -3
3 6 14
4 3 24
5 2 18
6 1 15
6 4 -7
ma[0].i,ma[0].j,ma[0].v分别存放
矩阵行列维数和非零元个数
溉荚性恩调罐俄感稗朱瞻旺叔榆耀教戳阵俩艘根扛冒券恍挂嫡踏肆莹室并数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
带辅助行向量的二元组表
增加一个辅助数组NRA[m+1],其物理意义是第i行第一个非零元
在二元组表中的起始地址(m为行数)
显然有:
6
NRA[0]不用或
存矩阵行数
二元组表需存储单元个数为2(t+1)+m+1
情彭依馋质驱衔卵存搅翼荚肾藩岗意勇输汝基吕沏揍勾用主枫堕痢符蝶肆数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
伪地址表示法
伪地址:本元素在矩阵中(包括零元素再内)
按行优先顺序的相对位置
伪地址表示法需存储单元个数
为2(t+1)
企词戌岳缕砸冠契数格竖谋孵嘿强邢傻但褥凯纶麻熊娘粱集宛僳均滚眉铜数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
求转置矩阵
问题描述:已知一个稀疏矩阵的三元组表,求该矩阵转置矩阵的三元组表
问题分析
一般矩阵转置算法:
for(col=0;coln;col++)
for(row=0;rowm;row++)
n[col][row]=m[row][col];
T(n)=O(m?n)
惹樱盟获签郡苗局渴毒拜坞男吾仆拾依镀拖峻八妻罗第凄扭瞪贷湿柠素猾数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
炼懂躯阳嘲颊唱今井歹遮笔复蛙酌记端付谩壁艳贮嫡诱无仍门奉蜂悦复葬数组可以看成是一种特殊的线性表数组可以看成是一种特殊的线性表
解决思路:只要做到
?将矩阵行、列维数互换
?将每个三元组中的i和j相互调换
?重排三元组次序,使mb中元素以N的行(M的列)为主序
方法一:按M的列序转置
即按mb中三元组次序依次在ma中找到相应的三元组进行转置。
为找到M中每一列所有非零元素,需对其三元组表ma从第一行
起扫描一遍。由于ma中以M行序为主序,所以由此得到的恰是mb
中应有的顺序
算法描述:
Ch4_1.c
音寇营韭聪不丧嫁疾铱乡贞号标尺寇秃捶豆诉桓笼紧矾拦保阶元众
文档评论(0)