数据结构 矩阵.docx
《数据结构 矩阵.docx》由会员分享,可在线阅读,更多相关《数据结构 矩阵.docx(7页珍藏版)》请在冰豆网上搜索。
数据结构矩阵
软件学院
上机实验报告
课程名称:
数据结构
实验项目:
矩阵
实验室:
耘慧420
姓名:
学号
专业班级:
实验时间:
2016.11.24
实验成绩
评阅教师
一、实验目的及要求
1.掌握稀疏矩阵压缩存储方法(三元组顺序表存储)。
2.完成压缩存储下矩阵计算(矩阵转置)。
二、性质
验证性
三、实验学时
2学时
四、实验环境
C与C++程序设计学习与实验系统
五、实验内容及步骤
实验内容:
1.实现矩阵压缩存储。
(静态数组压缩存储或直接输入矩阵非0元均可)
2.实现矩阵转置算法。
3.实现矩阵快速转置。
实验步骤:
1.实现矩阵压缩存储。
(静态数组压缩存储或直接输入矩阵非0元均可)
2.实现矩阵转置算法TransposeSMatrix(TSMatrixM,TSMatrix&T)。
3.实现矩阵快速转置FastTransposeSMatrix(TSMatrixM,TSMatrix&T)。
4.主函数中创建矩阵M,将M调用转置算法转置成矩阵N,调用快速转置算法转化成矩阵T。
六、实验数据及结果分析
七、总结
了解了矩阵的一些知识,懂得了矩阵的一些算法。
并且在实际上机中,学会了矩阵的程序的编写方法。
附录源程序清单插入;
#include
#include"malloc.h"
#include
#include
#defineOK1
#defineERROR0
#defineMAXSIZE12500
#defineMAXRC1000
typedefintElemType;
typedefintStatus;
typedefstruct{
inti,j;
ElemTypee;
}Triple;
typedefstruct{
Tripledata[MAXSIZE+1];
intrpos[MAXRC+1];
intmu,tu,nu;
}RLSMatrix;
StatusTransposeSMatrix(RLSMatrixM,RLSMatrix&T){
intq=1,col=0,p=0;
T.mu=M.nu;
T.nu=M.mu;
T.tu=M.tu;
if(T.tu){
q=1;
for(col=1;col<=M.nu;++col)
for(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;
}}
return0;
}
StatusFastTransposeSMtrix(RLSMatrixM,RLSMatrix&T){
intcol=0,t=0,p=0,q=0;
ElemTypenum[100],cpot[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];
}}
returnOK;
}
StatusCreateSMatrix(RLSMatrix*M){
intk,m,n,i;
ElemTypee;
printf("请输入行列非零个数");
scanf_s("%d",&(*M).mu);
scanf_s("%d",&(*M).nu);
scanf_s("%d",&(*M).tu);
(*M).data[0].i=0;
for(i=1;i<=(*M).tu;i++){
do{
printf("请输入元素行列元素值");
scanf_s("%d",&m);
scanf_s("%d",&n);
scanf_s("%d",&e);
k=0;
if(m<1||m>(*M).mu||n<1||n>(*M).nu)
k=1;
if(m<=(*M).data[i-1].i&&n<=(*M).data[i-1].j)
k=1;
}while(k);
(*M).data[i].i=m;
(*M).data[i].j=n;
(*M).data[i].e=e;
}
returnOK;
}
voidprintfSMatrix(RLSMatrix&M){
inti;
printf_s("%4d%4d%8d\n",M.mu,M.nu,M.tu);
for(i=1;i<=M.tu;i++)
printf_s("%4d%4d%8d\n",M.data[i].i,M.data[i].j,M.data[i].e);
}
intmain(void)
{
RLSMatrixM,N,T,Q;
CreateSMatrix(&M);
FastTransposeSMtrix(M,T);
printfSMatrix(T);
CreateSMatrix(&N);
TransposeSMatrix(M,Q);
printfSMatrix(Q);
_getch();
return0;
}
WelcomeTo
Download
欢迎您的下载,资料仅供参考!