数据结构- 矩阵_第1页
数据结构- 矩阵_第2页
数据结构- 矩阵_第3页
数据结构- 矩阵_第4页
数据结构- 矩阵_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件学院

上机实验报告

课程名称:数据结构__________________________

实验项目:矩阵

实验室:耘慧420姓名:

_______________学号_______________

专业班级:实验时间:2022.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<stdio.h>

#include"malloc.h"

#include<conio.h>

#include<stdlib.h>

#defineOK1

#defineERROR0

#defineMAXSIZE12500

#defineMAXRC1000

typedefintElemType;

typedefintStatus;

typedefstruct{

inti,j;

ElemTypee;

JTriple;

typedefstruct{

Tripledata[MAXSIZE+1];

intrpos[MAXRC+1];

intmu,tu,nu;

JRLSMatrix;

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=i;

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[O].i=O;

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)

RLSMatr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论