稀疏矩阵: 非零元素很少,但是分布没有规律的矩阵。(即可以用三元组来存放每个非零元)。
三元组顺序表的定义:
#define size 3
typedef int Elemtype;
typedef struct{
int i,j;//非零元的行,列
Elemtype e;//非零元元素
}Triple;//三元组
typedef struct{
Triple date[size+1];//date[0]未用
int mu,nu,tu;//矩阵的行,列,非零元总数
}TSMatrix;//转置矩
注意:三元组第零个元素没有存放元素。
转置
一般矩阵的转置:将每个的行,列互换即可。
for(col=1;col<=nu;col++)//列
for(row=1;row<=mu;row++)//行
T[col][row]=M[row][col];
算法一:
三元组转置:将三元组的行列交换,在重新排列次序即可。关键是实现如何重新排列。在三元组M中元素遍历一遍,同时让列元素遍历一遍,判断列元素是否存在,然后放入转置的三元组T中。(因为M是按照行存放,所以得到的恰是T的顺序)
void Tranpose(TSMatrix M,TSMatrix &T){
T.mu=M.nu;
T.nu=M.mu;
T.tu=M.tu;
int q=1;
for(int col