📄 tsmatrix.cpp
字号:
#include <iostream>
#include <iomanip>
using namespace std;
#define MAXSIZE 12500
#define OK 1
typedef int ElemType;
typedef struct
{
int i,j;
ElemType e;
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
int TransposeSMatrix(TSMatrix M,TSMatrix &T)
{
T.mu=M.nu;
T.nu=M.mu;
T.tu=M.tu;
if(T.tu)
{
int q=1;
for(int col=1;col<=M.nu;col++)
for(int p=1;p<=M.tu;p++)
if(M.data[p].j==col)
{
T.data[q].i=M.data[p].j;
T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;
q++;
}
}
return OK;
}
void InputTSMatrix(TSMatrix &M)
{
int k;
cout<<"稀疏矩阵的行数和列数:";
cin>>M.mu>>M.nu;
cout<<"稀疏矩阵非零元个数:";
cin>>M.tu;
cout<<"稀疏矩阵三元组:(行 列 值)"<<endl;
for(k=1;k<=M.tu;k++)
cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;
}
void PrintTSMatrix(TSMatrix M)
{
int i,j,k=1;
for(i=1;i<=M.mu;i++)
{
for(j=1;j<=M.nu;j++)
{
if(i==M.data[k].i&&j==M.data[k].j)
{
cout<<setiosflags(ios_base::left)<<setw(4)<<M.data[k].e;
k++;
}
else
cout<<setiosflags(ios_base::left)<<setw(4)<<"0"; //补零
}
cout<<endl;
}
}
void MaxElem(int &i,int &j,TSMatrix M)
{
int k=1;
for(int t=k+1;t<=M.tu;t++)
if(M.data[k].e<M.data[t].e)
k=t;
i=M.data[k].i;
j=M.data[k].j;
}
void MinElem(int &i,int &j,TSMatrix M)
{
int k=1;
for(int t=k+1;t<=M.tu;t++)
if(M.data[k].e>M.data[t].e)
k=t;
i=M.data[k].i;
j=M.data[k].j;
}
void main()
{
int i,j;
TSMatrix M,T;
//----测试InputTSMatrix()和PrintTSMatrix()----
//InputTSMatrix(M);
//PrintTSMatrix(M);
//----测试TransposeSMatrix()----
//InputTSMatrix(M);
//cout<<"原矩阵:"<<endl;
//PrintTSMatrix(M);
//TransposeSMatrix(M,T);
//cout<<"转置矩阵:"<<endl;
//PrintTSMatrix(T);
//----测试MaxElem()和MinElem()----
InputTSMatrix(M);
PrintTSMatrix(M);
MaxElem(i,j,M);
cout<<"最大元素位置:"<<i<<" "<<j<<endl;
MinElem(i,j,M);
cout<<"最小元素位置:"<<i<<" "<<j<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -