稀疏矩阵的存储和快速转置实验报告Word文档格式.docx
- 文档编号:17609698
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:9
- 大小:34.49KB
稀疏矩阵的存储和快速转置实验报告Word文档格式.docx
《稀疏矩阵的存储和快速转置实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《稀疏矩阵的存储和快速转置实验报告Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
实验题目:
稀疏矩阵的快速转置
一、要解决的问题
利用三元组表存储稀疏矩阵,利用快速转置算法进行转置,并输出转置之前和以后的三元组表和矩阵。
二、算法大体思想描述:
由于稀疏矩阵的非零元素较少,零元素较多,因此只需存储其非零元素。
因此能够成立一个三元组表,别离保存稀疏矩阵的非零元素的行号、列号和元素值。
对稀疏矩阵进行快速转置是能够引入两个向量num[n+1],cpot[n+1],别离标记矩阵中第col列的非零元素个数和第一个非零元素在转置后的矩阵的位置;
再扫描三元组表,找到非零元素,直接对其在转置后的矩阵所在的位置上进行修改,以节省时刻。
三、详细设计
⒈元素类型,结点类型
typedefstruct{
inti,j;
inte;
}Triple;
typedefstruct{
Tripledata[MAXSIZE+1];
intmu,nu,tu;
}Tsmatrix;
2.对抽象数据类型中的部份大体操作的伪码算法如下:
Tsmatrix*creatarray(Tsmatrix*M)
{intm,n,p=1;
intc;
printf("
pleaseinputthearrayA:
\n"
);
for(m=1;
m<
=a;
m++)
for(n=1;
n<
=b;
n++)
{scanf("
%d"
&
c);
if(c!
=0)
{M->
data[p].e=c;
M->
data[p].i=m;
data[p].j=n;
p++;
}
tu=p;
mu=a;
nu=b;
yuanlaisanyuanzudebiaoshiwei:
\n\n"
=M->
tu;
%3d%3d%3d\t"
M->
data[m].i,M->
data[m].j,M->
data[m].e);
returnM;
}
/*三元组快速转置*/
Tsmatrix*fasttrans(Tsmatrix*M,Tsmatrix*T)
{intp,col,q,t,m;
intnum[100];
intcpot[100];
T->
mu=M->
nu;
nu=M->
mu;
tu=M->
if(T->
tu!
{
for(col=1;
col<
col++)num[col]=0;
for(t=1;
t<
t++)++num[M->
data[t].j];
cpot[1]=1;
for(col=2;
col++)cpot[col]=cpot[col-1]+num[col-1];
for(p=1;
p<
++p)
{col=M->
data[p].j;
q=cpot[col];
data[q].i=M->
data[q].j=M->
data[p].i;
data[q].e=M->
data[p].e;
++cpot[col];
\n\nzhuanzhihoudesanyuanzubiaoshiwei:
=T->
T->
data[m].i,T->
data[m].j,T->
returnT;
/*输出三元组函数*/
voidprint(Tsmatrix*T,intx,inty)
intd;
=x;
{printf("
=y;
{if(T->
data[p].i==m&
&
T->
data[p].j==n)
{d=T->
elsed=0;
%6d"
d);
}3.主函数和其他函数的伪码算法
voidmain()
{Tsmatrix*M,*T;
M=(Tsmatrix*)malloc(sizeof(Tsmatrix));
T=(Tsmatrix*)malloc(sizeof(Tsmatrix));
pleaseinputarray'
srowandcol:
scanf("
%d%d"
a,&
b);
/*输入行列数*/
M=creatarray(M);
/*创建稀疏矩阵*/
youhadcreatthearray:
print(M,a,b);
/*输出创建好的三元组*/
T=fasttrans(M,T);
/*将三元组转置*/
thetransarrayis:
print(T,b,a);
getch();
4、模块结构及功能
四、源程序清单:
#include<
>
#defineMAXSIZE100
inta,b;
/*概念全局变量数组的行数a和列数b*/
/*用数组创建三元组*/
M->
五、测试数据及测试结果:
(1)我输入的稀疏矩阵为:
(2)回车显示的结果是:
六、课程设计总结及心得体会:
通过本次课程设计,我对有关稀疏矩阵及其三元组表的知识做了温习和巩固。
在课程设计的进程中,碰到了很多问题,如稀疏矩阵操作中对矩阵信息统计犯错的问题。
我为此在程序中加入printf语句,通过该语句是不是输出,找到致使运行犯错的位置,再进行改动调试,最终解决了问题,同时也加深了对两个程序的明白得。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 稀疏 矩阵 存储 快速 实验 报告