一、问题描述
十字链表实现稀疏矩阵的加法
1
、
功能要求:
根据用户输入的矩阵,实现稀疏矩阵的求和运算,并输出结果。
2
、
输入要求:
矩阵的数据在程序运行的时候由用户提供,
先由用户输入稀疏矩阵的行
数、列数和非零元个数。
再根据非零元个数,
输入这些非零元,还需要用户为这些非零元输
入行、列和非零元的值。这样,一个稀疏矩阵就输入完成。
若输入
4
3
2
则表示这个稀疏矩阵有
4
行
3
列
2
个非零元
然后用户需要为这两个非零元输入行、列、非零元的值
如:
1
2
2
4
1
1
表示第一个非零元行为
1
,列为
2,
,值为
2
;第二个非零元行为
4
,列为
1
,值为
1
。
此过程输入的稀疏矩阵为:
0
2
0
0
0
0
0
0
0
1
0
0
3
、
输出要求:
输出按矩阵输出,按行列依次输出,非零元则输出非零元的值,不是非
零元则输出“
0
”
。各元素之间用空格隔开。最后输出完整的矩阵。
二、概要设计
1
.稀疏矩阵的抽象数据类型定义如下:
ADT SparseMatrix {
数据对象:
D={
a
ij
|i=1,2,3
„„
m,j=1,2,3
„„
n;
a
ij
属于
ElemSet,m
和
n
分别是稀疏矩阵的行数和列数
}
数据关系:
R={ Row, Col }
Row={<
a
ij
,
a
ij+1
>|1<=i<=m,1<=j<=n-1}
Col={<
a
ij
,
a
i+1j
>|1<=i<=m-1,1<=j<=n}
基本操作:
CreateSMatrix(&M);
//
建立稀疏矩阵
M
DestroySMatrix(&M);
//
销毁稀疏矩阵
M
;
TransposeSMatrix(M);
//
求稀疏矩阵的转置矩阵
AddSMatrix(&M,&N);
//
求稀疏矩阵
M
和
N
之和
MulSMatrix(&M,&N);