稀疏矩阵的转置
一、实验目的
掌握稀疏矩阵的三元组
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示法,能够实现稀疏矩阵的转置。
二、实验环境
1、硬件:每个学生需配备计算机一台
2、软件:windows操作系统+Turbo C 三、实验内容
1、用三元组表示法建立一个稀疏矩阵,并能够完成对其的转置。
2、数据元素的输入和输出的实现。
3、三元组的转置前后的标识位。
4、输出转置前后的矩阵。
四、代码
#include
#include
#include
#include
#define MAXSIZE 12500 #define ok 1
typedef struct
{int i,j;
int e;
}hcy;
struct student
{hcy data[MAXSIZE+1];
int mu,nu,tu;};
struct student T,M;
void hcy_cj()
{int i;
printf("请输入行数和列数和非零元个数\n");
scanf("%d %d %d",&M.mu,&M.nu,&M.tu);
for (i=1;i<=M.tu;i++)
{printf("请输入行坐标列坐标和非零元:"); scanf("%d %d %d",&M.data[i].i,&M.data[i].j,&M.data[i].e);}}
hcy_zz()
{int col,t,p,q,cpot[100],num[100];
T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;
if(T.tu)
{for(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(col=2;col<=M.nu;++col) cpot[col]=cpot[col-1]+num[col-1];
for(p=1;p<=M.tu;++p)
{col=M.data[p].j;
q=cpot[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;
++cpot[col];}}}
hcy_out (struct student x) {int i,j,k,flag;
for(i=1;i<=x.mu;i++){
for(j=1;j<=x.nu;j++){
flag=0;
for(k=1;k<=x.tu;k++){
if(((x.data[k].i)==i)&&((x.data[k].j)==j)) {flag=1;
printf("% d",x.data[k].e);}}
if(flag==0)printf(" 0");}
printf("\n");}}
void main()
{hcy_cj();
printf("输入的矩阵为:\n"); hcy_out(M);
hcy_zz();
printf("转置后的矩阵为:\n"); hcy_out(T);}