用三列二维数组表示的稀疏矩阵类

阅读: 评论:0

用三列二维数组表示的稀疏矩阵类

用三列二维数组表示的稀疏矩阵类

1.稀疏矩阵:矩阵中绝大多数的元素值为零,只有少数的非零元素值;

2.对稀疏矩阵采用压缩存储的目的是为了节省存储空间,并且,稀疏矩阵压缩存储后,还要能够比较方便地访问其中的没个元素(包括零元素和非零元素);

3.对稀疏矩阵进行压缩存储有两种方法:稀疏矩阵的三列二维数组表示和十字链表方法。

稀疏矩阵的三列二维数组表示:

    (1)每个非零元素用三元组表示:(i,j,v)分别对应(行,列,非零元素);

    (2) 为了表示唯一性,除了每个非零元素用一个三元组表示外,在所有的非零元素三元组之前添加一组信息(I,J,V)对应(总行数,总列数,非零元素个数),也就是说,我们要确定确切的稀疏矩阵,必须先知道该稀疏矩阵的总行数,总列数,非零个数;

    (3)为了便于在三列二维数组B中访问稀疏矩阵A中的各元素,通常还附设两个长度与稀疏矩阵A的行数相同的向量POS与NUM。其中POS[K]表示稀疏矩阵A中的第k行的第一个非零元素(如果有的话)在三列二维组B中的行号;NUM[k]表示稀疏矩阵A中第k行中非零元素的个数;

pos[0]=0; pos[k]=pos[k-1]+num[k-1]

4.三列二维数组表示的稀疏矩阵类如下:

文件名:X_Array.h

#include <iostream>
#include <iomanip>
using namespace std;
template <class T>
struct B
{int i;   //非零元素所在行号int j;   //非零元素所在列号T v;     //非零元素值
};
//三列二维数组表示的稀疏矩阵类
template <class T>
class X_Array
{
private:int mm;      //稀疏矩阵行数int nn;      //稀疏矩阵列数int tt;      //非零个数B<T> *bb;    //三列二维数组空间int *pos;    //某行第一个非零元素在b中的下标int *num;    //某行非零元素的个数
public:void in_X_Array();                    // 以三元组形式键盘输入稀void cp_X_Array(int,int,int,B<T>[]);  // 复制三元数组void th_X_Array(int,int,T[]);         // 由一般稀疏矩阵转换void prt_X_Array();                   // 按行输出稀疏矩阵X_Array tran_X_Array();               // 稀疏矩阵转置X_Array operator +(X_Array &);        // 稀疏矩阵相加X_Array operator *(X_Array &);        // 稀疏矩阵相乘};// 以三元组形式键盘输入稀疏矩阵非零元素template <class T>
void X_Array<T>::in_X_Array()
{int k,m,n;cout<<"输入行数 列数 非零元素个数:"<<endl;cin>>mm

本文发布于:2024-01-28 19:39:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064419499794.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:稀疏   数组   矩阵   用三列
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23