九乡新闻网
谈无欲为什么杀素柔云:矩阵转置
来源:百度文库 编辑:
九乡新闻网
时间:2024/05/22 06:56:05
*************************************************SparseMatrix.h***********************************************#include
using namespace std;const int maxNum=100;template
class Trituple
{
public:
int row;
int col;
T data;
};template
class SparseMatrix
{
friend istream& operator >>(istream& in,SparseMatrix
&m) //重载输入运算符
{
cout<<"请输入行数,列数以及非零元素个数:"; //初始化稀疏矩阵的行、列以及非零元素的个数
in>>m.row>>m.col>>m.terms;
if(m.terms>m.maxTerms)
{
cout<<"错误!非零元素溢出!";
}
else
{
for(int i=0;i
{
cout<<"请输入第"<
in>>m.t[i].row>>m.t[i].col>>m.t[i].data;
while((m.t[i].row>=m.row)||(m.t[i].col>=m.col)) //矩阵元素下标检查
{
cout<<"错误!输入的矩阵元素下标越界!请从新输入:";
in>>m.t[i].row>>m.t[i].col>>m.t[i].data;
}
}
}
return in;
}
friend ostream& operator <<(ostream& out,SparseMatrix
&m) //重载输出运算符
{
int i,j,k=0;
out<<"行:"<
/*for(int i=0;i
{
out<<"M["<
}*/
for(i=0;i
{
for(j=0;j
{
if((m.t[k].row==i)&&(m.t[k].col==j))
{
out<
}
else
{
cout<<'0'<<" ";
}
}
out<
} return out;
}private:
int row;
int col;
int terms;
Trituple
*t; //三元组数组
int maxTerms; //最大元素数目
public:
SparseMatrix(int maxSize=maxNum) //构造函数
{
maxTerms=maxSize;
row=col=terms=0;
t=new Trituple
[maxSize];
}
~SparseMatrix() //析构函数
{
delete []t;
}
/*SparseMatrix
transposedMatrix() //课本上的矩阵转置函数,逻辑正确,但是运行时内存报错
{
int *rowSize=new int[col]; //存放转置矩阵各行中的非零元素个数
int *rowStart=new int[col]; //存放转置矩阵各行中非零元素开始的存放位置
SparseMatrix
tp(maxTerms); //存放转置后的矩阵
tp.row=col;
tp.col=row;
tp.terms=terms;
if(terms>0)
{
int i=0;
int j=0;
for(i=0;i
rowSize=0;
for(i=0;i
rowSize[t[i].col]++;
rowStart[0]=0;
for(i=1;i
rowStart[i]=rowSize[i]+rowStart[i-1];
//*****************************************
for(i=0;i
cout<
cout<
for(i=0;i
cout<
cout<
//******************************************
for(i=0;i
{
j=rowStart[t[i].col]; //j转置矩阵的三元组的行
//rowStart[t[i].col]++;
tp.t[j].row=t[i].col;
tp.t[j].col=t[i].row;
tp.t[j].data=t[i].data;
rowStart[t[i].col]++;
}
}
delete []rowSize;
delete []rowStart;
return tp;
}*/
void transposedMatrix(SparseMatrix &tp) //自己编写的转置矩阵函数
{
int i,j;
if(terms>0)
{
int Row=0;
tp.col=row; //初始化转置矩阵的行、列以及非零元素个数
tp.row=col;
tp.terms=terms;
for(j=0;j
{
for(i=0;i
{
if(t[i].col==j) //检查原三元组的列,如果相同,则交换行、列赋值给转置矩阵
{
tp.t[Row].row=t[i].col;
tp.t[Row].col=t[i].row;
tp.t[Row].data=t[i].data;
Row++;
}
}
}
}
}
/*void displayTrituple() //输出三元组
{
for(int i=0;i
{
cout<
}
cout<
}*/
};*******************************************SparseMatrixMain.cpp*************************************************#include "stdafx.h"
#include
//#include "Trituple.h"
#include "SparseMatrix.h"using namespace std;int _tmain(int argc, _TCHAR* argv[])
{
SparseMatrix
obj;
SparseMatrix
obj1;
cin>>obj;
//obj.displayTrituple(); //测试时使用的输出三元组的函数
cout<<"*********************初始矩阵**********************"<
cout<
obj.transposedMatrix(obj1); //调用自己编写的转置函数
//obj.transposedMatrix(); //调用课本的转置函数
cout<<"*********************转置矩阵**********************"<
cout<
//cout<
return 0;
} 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Reyes11235813/archive/2008/10/23/3132453.aspx
矩阵转置
希尔伯特矩阵
对角矩阵
波士顿矩阵
安索夫矩阵
矩阵图
波士顿矩阵
理解矩阵
波士顿矩阵
理解矩阵
平衡矩阵型组织-
强矩阵组织-
波士顿矩阵法1
矩阵组织结构
理解矩阵[haowen]
剑齐发 矩阵营销
在线电子音乐矩阵
矩阵旋转入门
理解矩阵2
矩阵相乘函数 c++
SWOT分析方法矩阵:
灰度共生矩阵
巧用胆拖式旋转矩阵法
马尔科夫转移矩阵法