- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
稀疏矩阵相乘
1问题描述
1.1稀疏矩阵的三元组及十字链表表示
稀疏矩阵及其三元组表示
行〔row)
列〔col)
值〔value)
[0]
0
3
22
[1]
0
6
15
[2]
1
1
11
[3]
1
5
17
[4]
2
3
-6
[5]
3
5
39
[6]
4
0
39
[7]
5
2
28
稀疏矩阵
〔2〕稀疏矩阵的十字链表表示
1.2根本要求
以“带行逻辑链接信息”的三元组表示稀疏矩阵;
输入矩阵用三元组顺序输入;
〔2〕稀疏矩阵采用十字链表表示;
〔3〕实现两个矩阵相乘的运算,而运算结果的矩阵那么以通常的阵列形式列出。
2设计思路
2.1存储结构设计
2.1.1三元组表示稀疏矩阵
只存储矩阵中极少的非零元素,采用row,col,value来唯一地确定每一个非零元素,其中row、col、value分别表示非零元素在矩阵中的的行下标、列下表和值。各数组元素的三元组按在原矩阵中的位置以行优先的顺序依次存放。
structtriple
{//三元组结构定义
introw,col; //非零元素行号,列号
Floatvalue;//非零元素的值
tripleoperator=(triplex)
{row=x.row;col=x.col;value=x.value;}
};
2.1.2十字链表表示稀疏矩阵
structelement{introw,col;floatvalue;};
classMatrix;
classnode
{//矩阵节点类的定义
friendclassMatrix;
public:
node():head(true){right=down=this;}//建立附加头结点
node(element*t)//建立非零元素结点
{
triple.col=t-col;
triple.row=t-row;
triple.value=t-value;
right=down=this;
head=false;
}
node*down,*right;//行列链表指针
boolhead;
union{elementtriple;node*next;};//无名联合
};
classMatrix
{//稀疏矩阵的类定义
friendistreamoperator(istream,Matrix);
friendostreamoperator(ostream,Matrix);
private:
intRow,Col,Terms,temp;//矩阵的总行数,总列数,和非零元素个数和临时变量;
node*headnode;//稀疏矩阵的总表头
public:
Matrix(intm,intn);//重载构造函数
Matrix();//对矩阵进行构造
Matrix(MatrixT);//复制构造函数
~Matrix(){makeEmpty();}//析构函数
voidInit(intm,intn);//初始化函数,又来初始化无参构造函数构造的矩阵
voidmakeEmpty();//清空矩阵
voidInsert(intm,intn,floatp);//插入矩阵元素
node*Locate(inti);//定位附加头结点
MatrixMul(Matrixb);//两个矩阵相乘
Matrixoperator=(MatrixT);//重载赋值号
};
在稀疏矩阵的十字链表表示中,矩阵的的每一行设置为一个带附加头结点的循环行链表,每一列也设置为一个带附加头结点的循环列链表。链表中的结点都属于类node的对象,这个类包含一个域head,它用于区分改结点是附加头结点还是链表中的非零元素结点;head=true,表示该结点是附加头结点;head=false,表示该结点是矩阵中的非零元素结点。
每一个附加头结点还有三个域:down、right、next。第i个行链表和第i个列链表共用一个附加头结点,在它的right域存放第i行链表最前端的第一个结点的地址,在它的down域存放第i列链表的最前端第一个结点的地址,通过next域链接到第i+1个附加头结点。每一个非零元素结点包含六个域:head,row,col,down,right,value。Down存放列链表指针,right存放行链表指针。
整个稀疏矩阵定义为类Matrix的一个对象,*headnode给出整个附加头
您可能关注的文档
- 八上1.3让家庭美德之花盛开.ppt
- 六维定制改脸型.ppt
- 企业所得税汇算相关管理办法.ppt
- 初三化学课题3《制取氧气》PPT课件.ppt
- 社团管理系统课设报告.doc
- 信号与系统第8章(6-2).ppt
- 福建省会计专业人员.doc
- 初一上册-爸爸的花落了[1].ppt
- 空间解析几何(复习提纲).doc
- 初中化学《燃烧与灭火》PPT说课课件.ppt
- 浙江省临海市白云高级中学2025届高三历史3月月考试题.doc
- 云南拾谷县第一中学2024_2025学年高二物理上学期10月月考试题.doc
- 2025版高考生物总复习第13讲基因的分离定律教案苏教版.doc
- 湖北省黄石实验高中2024_2025学年高一历史下学期期末考试模拟卷.doc
- 通史版2025版高考历史大一轮复习专题七近代化的曲折发展__中日甲午战争至五四运动前4第4讲从维新思想到新文化运动课后达标检测含解析新人教版.doc
- 2024年高考数学考试大纲解读专题04导数及其应用含解析文.doc
- 河南省许汝平九校联盟2024_2025学年高一语文上学期期末考试试题扫描版无答案.doc
- 江西省吉安市吉水县第二中学2024_2025学年高一历史上学期第二次月考试题.doc
- 北京市平谷区2025届高三政治一模考试试题含解析.doc
- 2025届中考物理第四讲物态变化专项复习测试无答案新人教版.docx
文档评论(0)