- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机系数据结构实验报告(5)
姓名: 翁恒丛 学号: 6100410184 专业班级: 卓越计算机 101
一、实验目的:
深入研究数组的存储表示和实现技术,着重掌握对稀疏矩阵的表示方法及其运算的实现。二、问题描述:
稀疏矩阵是指那些多数元素为零的矩阵。利用‘稀疏’特点进行存储和计算可以大大节省存储空间,提高效率。通过对稀疏矩阵的存储表示,实现矩阵的基本操作
三、实验要求:
1、 要求矩阵的输入形式采用三元组表示,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵。
2、 设计矩阵的逆置算法,实现矩阵的逆置。
3、 实现两个稀疏矩阵的相加、相减和相乘等运算。
4、 要求运算结果的矩阵则以通常的阵列形式出现四、算法分析:
详见源代码:
创建矩阵
初始化矩阵
输出矩阵
矩阵转置
矩阵加法
矩阵乘法
矩阵求逆
五、实验内容和过程:
分析数据结构
实验中已经要求用三元组表示矩阵,三元组的特点是在表中按行序有序存储,因此便于进行顺序处理的矩阵运算,但同样存在顺序存储的缺点,即查找元素需要从头开始。 一下程序 TM 为矩阵,包含data 数组和该矩阵的 mu,nu,tu。而 data 数组则存放着三元组,每个三元组由元素数值 e,元素所在行数 i,元素所在列数j 构成。
表示数据结构(
三元组表示如下:
typedef struct
{
int i,j;
//
行下标,列下标
ElemType e;
//
非零元素值
}Triple;
而用顺序表表示矩阵如下:
typedef struct {
Triple data[MAXSIZE+1]; // 非零元三元组表,data[0]未用
int mu,nu,tu; // 矩阵的行数、列数和非零元个数
}TSMatrix;
编写矩阵的基本操作
void create(TSMatrix TM); //创建矩阵
void disp(TSMatrix TM);//通常形式输出稀疏矩阵Status LocateELem(TSMatrix M,int i,int j,int e);
void InsertSortMatrix(TSMatrix TM); 4.编写主程序架构,主要完成复杂运算
Status TransposeSMatrix(TSMatrix M,TSMatrix T); //矩阵转置的算法Status AddTSM(TSMatrix A,TSMatrix B,TSMatrix C); // 加 法 运 算 :C=A+B Status MultSMatrix(TSMatrix A,TSMatrix B,TSMatrix C);//乘法运算:C=A×B void NiMatrix(TSMatrix TM); //矩阵求逆
调试运行
主要有两个错误:
由于 C/C++混合用,所以在输出运用 cout 时在头部加入了命名空间,可是这里反而不用到,查阅了相关资料,可都是说需要。不知道是否和 iomainp.h 头文件有关。删除后居然通过编译。
其他的错误主要是语法错误,当然一开始编译中出现过下标不符合和偏移,逻辑上不完整等,比对了多个程序之后,也参考了其他程序的算法,之后逐渐修改通过编译。
完成实验报告六、实验结果:
转置
求逆
_谓选择操作( 0 - 4 ) :
_
3__utA3u-nA3u
3
__
u
t
A
3
u-
n
A
3
u-
m
.
白
- .0 0.
-
.0 0
.
-
.
.
-_1
5.-。0 05.05
5
.
-
。
0 0
5
.0
5
.0 0
0
-
割试矩芦A的二元组表示:
白:( 1 , 1,2),(2,2,2),(3,3,2)
A.mu=3.A.nu=3.A.tu=3
谓韵.,人矩阵行数( mu ) 、到数( nu) 、非零元·个数( t u) . ,注薰:所有数毛均用空格泾开,
3苇,
3
苇
,
.Jjj
2 2 21 2 31 2 3......
2 2 2
1 2 3
1 2 3
......
)
eee
...
1 .1 .1
(((
俏俏俏
、
|-|- |-
对,石,石'
-
·i.、丿 、丿、 `苇2
·i
.
、丿 、丿
、 `
,.%3
,
.
A:
2 0 0
0 2 0
0 0 2
矩阵的行列式的信: I A I =8
0 0
0 0
l.f0o
l.f
0
o
l.f
o
逆矩阵(印)/I AI :
O. 5 0
0 0.5
o o
。
丛0.5
丛
Press any key to continue!
加法
乘法
退出
七、总结和感想:
本来一开始也想用 C++写这个程序的,但是编写过程中,发现重载运算符有点困难, 虽然知道重载运算符的基本思想,但是一编译出现七十多个错误(下图部分),而且毫无头
原创力文档


文档评论(0)