- 6
- 0
- 约8.75千字
- 约 12页
- 2017-12-22 发布于河南
- 举报
矩阵算法
矩阵算法
c语言矩阵的运算的算法
#include iostream
#include iomanip
using namespace std;
const int MAXSIZE=100; // 定义非零元素的对多个数
const int MAXROW=10; // 定义数组的行数的最大值
typedef struct // 定义三元组的元素
{
int i,j;
int e;
}Triple;
typedef struct // 定义普通三元组对象
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
typedef struct// 定义带链接信息的三元组对象
{
Triple data[MAXSIZE+2];
int rpos[MAXROW+1];
int mu,nu,tu;
}RLSMatrix;
template class P
bool InPutTSMatrix(P T,int y)//输入矩阵,按三元组格式输入
{
cout输入矩阵的行,列和非零元素个数:endl;
cinT.muT.nuT.tu;
cout请输出非零元素的位置和值:endl;
int k=1;
for(;k=T.tu;k++)
cinT.data[k].iT.data[k].jT.data[k].e;
return true;
}
template class P
int OutPutSMatrix(P T)// 输出矩阵,按标准格式输出
{
int m,n,k=1;
for(m=0;mT.mu;m++)
{
for(n=0;nT.nu;n++)
{
if((T.data[k].i-1)==m(T.data[k].j-1)==n)
{
cout.width(4);
coutT.data[k++].e;
}
else
{
cout.width(4);
cout0;
}
}
coutendl;
}
return 1;
}
// 求矩阵的转置矩阵
int TransposeSMatrix( )
{
TSMatrix M,T; //定义预转置的矩阵
InPutTSMatrix(M, 0); //输入矩阵
int num[MAXROW+1];
int cpot[MAXROW+1]; // 构建辅助数组
int q,p,t;
T.tu=M.tu; T.mu=M.nu; T.nu=M.mu;
if(T.tu)
{
for(int col=1;col=M.nu;col++) num[col]=0;
for(t=1;t=M.tu;t++) ++num[M.data[t].j];
cpot[1]=1;
for(int i=2;i=M.nu;i++) cpot[i]=cpot[i-1]+num[i-1];//求出每一列中非零元素在三元组中出现的位置
for(p=1;p=M.tu;p++)
{
col=M.data[p].j; q=cpot[col];
T.data[q].i=col; T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e; ++cpot[col];
}
}
cout输入矩阵的转置矩阵为endl;
OutPutSMatrix(T);
return 1;
}
bool Count(RLSMatrix T)
{
int num[MAXROW+1];
for(int col=1;col=T.mu;col++) num[col]=0;
for(col=1;col=T.tu;col++) ++num[T.data[col].i];
T.rpos[1]=1;
for(int i=2
原创力文档

文档评论(0)