稀疏矩阵转置的一般方法

稀疏矩阵转置需要实现:

(1)将矩阵的行列值转换;

(2)将数组元素中的行坐标i,列坐标j互换;

(3)重排转置后元素之间的次序;

(1)(2)容易实现,对于(3),将原矩阵中的元素依次按照列的次序转换目标矩阵中。

具体算法如下:

#include<iostream>

#define MAXSIZE 12500

typedef struct {
	int i, j;
	int e;
}Triple;//三维元素
typedef struct{
	Triple data[MAXSIZE + 1];
	int mu, nu, tu;  //行、列、总数
}TSMatrix;//稀疏矩阵

int TransposeSMatrix(TSMatrix M, TSMatrix &T){
	T.mu = M.nu; T.nu = M.mu; T.tu = M.tu;
	if (T.tu){
	int cnt=1;
	for (int col = 1; col < M.nu; col++){
		for (int i = 1; i < M.tu; i++){
			if (M.data[i].j == col){
				T.data[cnt].i = M.data[i].j; T.data[cnt].j = M.data[i].i;
				T.data[cnt].e = M.data[cnt].e; cnt++;}
		}
	}
	return 1;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值