1 / 11
文档名称:

数据结构实验.doc

格式:doc   大小:106KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验.doc

上传人:rdwiirh 2021/2/24 文件大小:106 KB

下载得到文件列表

数据结构实验.doc

相关文档

文档介绍

文档介绍:计算机系数据结构实验报告(1)
姓名: 孟红波 学号: 专业班级: 卓越101班
实验目的:
深入研究数组的存储表示和实现技术,着重掌握对稀疏矩阵的表示方法及其运算的实现。
问题描述:
稀疏矩阵是指那些多数元素为零的矩阵。利用‘稀疏’特点进行存储和计算可以大大节省存储空间,提高效率。通过对稀疏矩阵的存储表示,实现矩阵的基本操作。
实验要求:文法是一个四元
1、要求矩阵的输入形式采用三元组表示,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵。
2、设计矩阵的逆置算法,实现矩阵的逆置。
3、实现两个稀疏矩阵的相加、相减和相乘等运算。
4、要求运算结果的矩阵则以通常的数组形式出现。
实验内容和过程:
实验步骤
首先应输入矩阵的行数和列数、并判别给出的两个矩阵的行、列数对于所要求的运算是否相匹配;
以三元组的形式输入矩阵;
调用矩阵的逆置子函数、相加函数和相乘函数;
分析输出结果,并进行总结。
输入数据:2 1 0
0 0 0
0 0 3
2 0 0
1 0 0
0 0 3
-1
2 1 0
0 0 0
0 0 3
0 0 0
0 0 0
0 0 2
+
=
2 1 0
0 0 0
0 0 5
2 1 0
0 0 3
0 0
0 0
0 2
*
=
0 0
0 6
实验程序:
#include <iostream>
#include <iomanip>
using namespace std;
const int MAXSIZE=100;
const int MAXROW=10;
typedef struct {
int i,j;
int e;
}Triple;
typedef struct {
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
typedef struct {
Triple data[MAXSIZE+2];
int rpos[MAXROW+1];
int mu,nu,tu;
}RLSMatrix;
template <class P>
bool InPutTSMatrix(P & T,int y){
cout<<"输入矩阵的行,列和非零元素个数:"<<endl;
cin>>>>>>;
cout<<"请输出非零元素的位置和
值:"<<endl;
int k=1;
for(;k<=;k++)
cin>>[k].i>>[k].j>>[k].e;
return true;
}
template <class P>
bool OutPutSMatrix(P T){
int m,n,k=1;
for(m=0;m<;m++){
for(n=0;n<;n++){
if(([k].i-1)==m&&([k].j-1)==n){
(4);
cout<<[k++].e;}
else{
(4); cout<<"0"; }
}
cout<<endl;
}
return true;
}
bool TransposeSMatrix( ){
TSMatrix M,T; //定义预转置的矩阵
InPutTSMatrix(M, 0); //输入矩阵
int num[MAXROW+1];
int cpot[MAXROW+1]; // 构建辅助数组
int q,p,t;
=; =; =;
if(){
for(int col=1;col<=;col++) num[col]=0;
for(t=1;t<=;t++) ++num[[t].j];
cpot[1]=1;
for(int i=2;i<=;i++) cpot[i]=cpot[i-1]+num[i-1]; // 求出每一列中非零元素在三元组中出现的位置
for(p=1;p<=;p++){
col=[p].j; q=cpot[col];
[q].i=col; T