稀疏矩阵的转置、相加

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:40:06
任务:(1)完成一稀疏矩阵转置,(2)能够完成两个稀疏矩阵相加,(3)输出稀疏矩阵
一、 目的:
1、掌握数组的性质;
2、掌握压缩矩阵的性质、应用;
3、掌握希疏矩阵的基本操作如转置、两个矩阵相加
二、问题分析:
1、定义稀疏矩阵思路:利用三元组且在其中还添加了一个变量tag,主要是用来实现两个矩阵加时当作标志。
2、两个矩阵相加的思路:
在给出的两个稀疏矩阵下,如果它们对应相同的非零元坐标相同则它们的元素相加,如果不相同,则还是放到原来的位置不变。
三、概要设计
数据结构:线性结构中的数组
程序流程:第一步自定义一个用来存放稀疏矩阵的三元组
第二步创建两个具体的实例稀疏矩阵如:T、L
第三步实现两个稀疏矩阵相加,具体流程又如下:
令S为为两个稀疏矩阵相加后所得到的新矩阵。则在给出的两个实例矩阵T、L中

http://hi.baidu.com/alonso13/blog/item/5a454f29a2b513f899250ac6.html

稀疏矩阵的定义及转置

#include <iostream>

using namespace std;

const int maxNum=100;

template <class T>
class Trituple
{
public:
int row;
int col;
T data;
};

template <class T>
class SparseMatrix
{
friend istream& operator >>(istream& in,SparseMatrix<T> &m) //重载输入运算符
{
cout<<"请输入行数,列数以及非零元素个数:"; //初始化稀疏矩阵的行、列以及非零元素的个数
in>>m.row>>m.col>>m.terms;
if(m.terms>m.maxTerms)
{
cout<<"错误!非零元素溢出!";
}
else
{
for(int i=0;i<m.terms;i++)
{
cout<<"请输入第"<&l