稀疏矩阵的存储压缩课件.ppt

上传人(卖家):晟晟文业 文档编号:5066265 上传时间:2023-02-07 格式:PPT 页数:29 大小:158KB
下载 相关 举报
稀疏矩阵的存储压缩课件.ppt_第1页
第1页 / 共29页
稀疏矩阵的存储压缩课件.ppt_第2页
第2页 / 共29页
稀疏矩阵的存储压缩课件.ppt_第3页
第3页 / 共29页
稀疏矩阵的存储压缩课件.ppt_第4页
第4页 / 共29页
稀疏矩阵的存储压缩课件.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、稀疏矩阵的存储压缩 0000280000000091039000000006000017000110150022000A76 2.4 稀疏矩阵稀疏矩阵 r ro ow w c co ol l v va al lu ue e0000015003901700000000006022280000000001100910000B 0000280000000091039000000006000017000110150022000A6776 行行行行(r ro ow w)列列列列(c co ol l)值值值值(v va al lu ue e)行行行行(r ro ow w)列列列列(c co ol l)值值

2、值值(v va al lu ue e)0 0 0 3 3 2 22 2 0 0 0 4 4 9 91 1 1 0 0 6 6 1 15 5 1 1 1 1 1 1 11 1 2 1 1 1 1 1 11 1 2 2 2 5 5 2 28 8 3 1 1 5 5 1 17 7 3 3 3 0 0 2 22 2 4 2 2 3 3 -6 6 4 3 3 2 2 -6 6 5 3 3 5 5 3 39 9 5 5 5 1 1 1 17 7 6 4 4 0 0 9 91 1 6 5 5 3 3 3 39 9 7 5 5 2 2 2 28 8 7 6 6 0 0 1 16 6 行行行行(r ro ow

3、w)列列列列(c co ol l)值值值值(v va al lu ue e)行行行行(r ro ow w)列列列列(c co ol l)值值值值(v va al lu ue e)0 0 0 3 3 2 22 2 0 0 0 4 4 9 91 1 1 0 0 6 6 1 15 5 1 1 1 1 1 1 11 1 2 1 1 1 1 1 11 1 2 2 2 5 5 2 28 8 3 1 1 5 5 1 17 7 3 3 3 0 0 2 22 2 4 2 2 3 3 -6 6 4 3 3 2 2 -6 6 5 3 3 5 5 3 39 9 5 5 5 1 1 1 17 7 6 4 4 0 0 9

4、 91 1 6 5 5 3 3 3 39 9 7 5 5 2 2 2 28 8 7 6 6 0 0 1 16 610000 0 1 2 3 4 5 6 语语 义义rowSize 1 1 1 2 0 2 1 矩矩阵阵 A 各各列列非非 零零元元素素个个数数rowStart 0 1 2 3 5 5 7 矩矩阵阵 B 各各行行开开 始始存存放放位位置置 for(int i=0;i Cols;i+)rowSizei=0;for(i=0;i Terms;i+)rowSizesmArrayi.col+;rowStart0=0;for(i=1;i (istream&,Matrix&);/矩阵输入重载函数矩阵

5、输入重载函数private:MatrixNode*down,*right;/列列/行链指针行链指针 Boolean head;/结点类型结点类型 Union Triple triple;MatrixNode*next;/矩阵元素结点矩阵元素结点(False)或链头结点或链头结点(True)MatrixNode(Boolean,Triple*);/结点构造函数结点构造函数MatrixNode:MatrixNode(Boolean b,Triple*t)/矩阵结点构造函数矩阵结点构造函数 head=b;/结点类型结点类型 if(b)right=next=this;else triple=*t;ty

6、pedef MatrixNode*MatrixNodePtr;/一个指针数组一个指针数组,用于建立稀疏矩阵用于建立稀疏矩阵class Matrix friend istream&operator (istream&,Matrix&);/矩阵输入矩阵输入public:Matrix();/析构函数析构函数private:MatrixNode*headnode;/稀疏矩阵的表头稀疏矩阵的表头;istream&operator (istream&is,Matrix&matrix)Triple s;int p;is s.row s.col s.value;/输入矩阵的行数输入矩阵的行数,列数和非零元素个

7、数列数和非零元素个数 if(s.row s.col)p=s.row;else p=s.col;/取行、列数大者取行、列数大者 matrix.headnode=/整个矩阵表头结点整个矩阵表头结点 new MatrixNode(False,&s);if(!p)/零矩阵时零矩阵时 matrix.headnoderight=matrix.headnode;return is;MatrixNodePtr*H=new MatrixNodePtr(p);/建立表头指针数组建立表头指针数组,指向各链表的表头指向各链表的表头 for(int i=0;i p;i+)Hi=new MatrixNode(True,0

8、);int CurrentRow=0;MatrixNode*last=H0;/当前行最后结点当前行最后结点 for(i=0;i t.row t.col t.value;/输入非零元素的三元组输入非零元素的三元组 if(t.row CurrentRow)/如果行号大于当前行如果行号大于当前行,闭合当前行闭合当前行 lastright=HCurrentRow;CurrentRow=t.row;last=HCurrentRow;last=lastright=/链入当前行链入当前行 new MatrixNode(False,&t);Ht.colnext=Ht.colnextdown =last;/链入

9、列链表链入列链表 lastright=HCurrentRow;/闭合最后一行闭合最后一行 /闭合各列链表闭合各列链表 for(i=0;i s.col;i+)Hinextdown=Hi;/链接所有表头结点链接所有表头结点 for(i=0;i p-1;i+)Hinext=Hi+1;Hp-1next=matrix.headnode;matrix.headnoderight=H0;delete H;return is;if(first!=NULL)CircListNode*second=firstlink;firstlink=av;av=second;first=NULL;if(av=NULL)newnode=new CircListNode;else newnode=av;av=avlink;avnewnodeavMatrix:Matrix()if(headnode=NULL)return;MatrixNode*x=headnoderight,*y;headnoderight=av;av=headnode;while(x!=headnode)y=xright;xright=av;av=y;x=xnext;headnode=NULL;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(稀疏矩阵的存储压缩课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|