数据结构 矩阵.docx

上传人:b****1 文档编号:1151220 上传时间:2022-10-18 格式:DOCX 页数:7 大小:33.73KB
下载 相关 举报
数据结构 矩阵.docx_第1页
第1页 / 共7页
数据结构 矩阵.docx_第2页
第2页 / 共7页
数据结构 矩阵.docx_第3页
第3页 / 共7页
数据结构 矩阵.docx_第4页
第4页 / 共7页
数据结构 矩阵.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

数据结构 矩阵.docx

《数据结构 矩阵.docx》由会员分享,可在线阅读,更多相关《数据结构 矩阵.docx(7页珍藏版)》请在冰豆网上搜索。

数据结构 矩阵.docx

数据结构矩阵

软件学院

上机实验报告

 

课程名称:

数据结构

实验项目:

矩阵

实验室:

耘慧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

 

欢迎您的下载,资料仅供参考!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1