- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
稀疏矩阵带行指针数组的单链表存储结构及相加算法实现
摘要:带行指针数组的单链表存储结构是稀疏矩阵压缩存储的一种实用的链式存储结构。文中描述了稀疏矩阵带行指针数组的单链表存储结构及基于此链式存储结构的相加运算算法,并应用C++类模板完成矩阵相加算法的具体实现,对类中参数的抽象化,提高了程序代码的复用性。
关键词:稀疏矩阵;行指针数组;链表存储结构;矩阵相加算法
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)36-0035-03
1稀疏矩阵
矩阵在科学计算中的应用十分广泛,而且随着计算机应用的发展,大量出现处理高阶矩阵问题,有的甚至达到几十万阶、几千亿个元素,这就有点要挑战计算机的内存容量了。然而,在大量的高阶矩阵问题中,绝大部分元素是零值,且非零值的分布没有一定的规律。当非零元素所占比例小于等于25%~30%时,我们称这种含有大量零元素的矩阵为稀疏矩阵。压缩这种零元素占据的空间,节省内存同时能够避免大量零元素进行的无意义运算,大大提高运算效率。[1]
稀疏矩阵压缩存储的顺序方式有三元组表、伪地址表示法等;链式结构有十字链表结构、带行指针数组的链表结构等。本文着重介绍带行指针数组的链表结构及基于此结构的稀疏矩阵类对象构造、输入、输出、相加等基本算法。
2稀疏矩阵带行指针数组的单链表存储结构[2]
稀疏矩阵中的每行对应一个单链表,每个单链表都有个表头指针,为了便于访问每一个单链表,需要使用一个行指针数组,该数组中的第i个元素用来存储矩阵中第i行对应的单链表的表头指针,该指针指向第i行第一个非零结点,若该行无非零元,则该指针为空。
带行指针数组的单链表存储结构中,把具有相同行号的三元组结点按照列号从小到大的顺序链接成一个单链表,每个结点由3个域组成:非零元所在列的列号(col),非零元的值(value)及指向本行下一个非零元的指针(next)。例如,稀疏矩阵A6×7如图1及其带行指针数组的单链表存储结构如图2所示。
3稀疏矩阵带行指针数组的单链表存储结构类型
3.1结点类定义
稀疏矩阵带行指针数组的单链表存储结构中每一个非零元结点的类的C++模板如下:[3]
template
structTripleNode
{int col;
T value;
TripleNode*next;
TripleNode operator=(TripleNodex)
{col=x.col;value=x.value;next=NULL;return *this;}}
3.2??行指针数组的单链表存储结构表示的稀疏矩阵类
带行指针的单链表存储结构表示的稀疏矩阵类包含稀疏矩阵行数、列数及非零元个数及动态行指针数组4个私有成员及稀疏矩阵的构造函数、析构函数、输入、输出、转置、相加、相乘等公有成员函数的声明,类的C++模板如下:
template
classSparseMatrix
{private:
int Rows,Cols,Terms;
TripleNode **PROWS;
public:
SparseMatrix(int rc,int cc,int tc);
~SparseMatrix(){delete []PROWS;}
void Add(SparseMatrixb,SparseMatrixc);
void create_SparseMatrix();
void print_SparseMatrix();};
4基于带行指针数组的单链表存储结构基本运算
4.1构造函数
template
SparseMatrix(intrc,intcc,inttc)
{ Rows=rc; Cols=cc; Terms=tc;
PROWS=newTwo_tuple *[Rows];
for (intI=0;IRows;i++)PROWS[i]=NULL;}
4.2 建立带行指针数组的单链表存储结构
在实例化稀疏矩阵时通过构造函数建立只有行指针数组的空的稀疏矩阵。在此基础上按行优先,列号从小到大顺序输入非零元所在行、列和值,申请一个结点所需存储空间,并将非零元的列号和值存入相应域,按列号从小到大的顺序将此结点插入到对应行尾部。构造函数及建立链表结构代码:
template
voidcreate_SparseMatrix()
{ int r,c;
T v;
Two_tuple *p,*q,*s;
for (int i=0;iTerms;i++)
{cinrc
您可能关注的文档
- 物尽其用 释放4K电视机的最大魅力.doc
- 物理定律是外星智慧?.doc
- 物理课堂教学“同课异构”的开发与实施研究.doc
- 物理农业在农业生产中的广泛应用.doc
- 物理师范生教育实习存在的问题及对策.doc
- 物理史在高中物理学习中的作用.doc
- 物理学习与抽象逻辑思维的养成训练.doc
- 物联网产业视点(2016年12月).doc
- 物联网产业视点(2017年1月).doc
- 物联网感知层模块实践教学研究.doc
- “十三五”重点项目-零件五金配件项目节能评估报告(节能专).docx
- “十三五”重点项目-非轮胎式挖掘机项目节能评估报告(节能专).docx
- “十三五”重点项目-电解用离子交换膜项目节能评估报告(节能专).docx
- 完工验收报告含申请表.docx
- 十三五重点项目-挥发性有机物治理项目资金申请报告.docx
- 关于学习的调研报告(通用7).docx
- “十三五”重点项目-脱水菜深加工项目节能评估报告(节能专).docx
- “十三五”重点项目-工业柴油机油项目节能评估报告(节能专).docx
- 国家节能中心标准模板--节能减排节能评估报告.docx
- 变压器及配电柜成套设备生产建设项目可行性研究报告.docx
最近下载
- 不寐(失眠症)中医临床路径.pdf
- 中国主要研究所名单(全).docx
- 高中生物 选择性必修一 综合练习卷2 含详细答案解析.pdf VIP
- 教学课件:《国际市场营销学(第三版)》甘碧群.ppt
- 2025年高一历史教学工作计划范文(通用26篇).doc VIP
- 中心小学优秀班主任主要事迹材料推荐登记表.docx VIP
- 质量三检培训.pptx VIP
- 猜数游戏有捷径(教学设计)-2024-2025学年人教版(2024)小学信息技术五年级全一册.docx
- 2023年武汉生物工程学院网络工程专业《计算机网络》科目期末试卷A(有答案).docx VIP
- 2024年中考语文复习:文学常识类选择题专项练习题(含答案解析).pdf VIP
文档评论(0)