稀疏矩阵与矩阵压缩

稀疏矩阵与矩阵压缩


稀疏矩阵

矩阵中,0比较多

长这样


一、三元组顺序表

1.节点

typedef struct {
	int row;//行下标
	int col;//列下标
	ele val;//元素
}Triple;

2.顺序表

typedef struct {
	int rn;//行数
	int cn;//列数
	int tn;//非0元素个数
	Triple data[MAX_SIZE];//节点库
}TMatrix;

3.实现代码

#include<iostream>
using namespace std;
#define MAX_SIZE 101
typedef int ele;
//三元组节点 结构体
typedef struct {
	int row;//行下标
	int col;//列下标
	ele val;//元素
}Triple;
//三元组顺序表
typedef struct {
	int rn;//行数
	int cn;//列数
	int tn;//非0元素个数
	Triple data[MAX_SIZE];//节点库
}TMatrix;

int main() {
	TMatrix mat;
	mat.tn = 9;
	mat.rn = 6;
	mat.cn = 7;
	for (int i = 0; i < mat.tn; i++) {
		cin>> mat.data[i].val >> mat.data[i].col >> mat.data[i].row ;
	}
	return 0;
}
/*//这是数据
12 1 2
9 1 3
-3 3 1
4 3 8
24 4 3
2 4 6
18 5 2
-7 6 7
-6 7 4
*/

二、十字链表

稀疏矩阵中同一行的非0元素由right指针域链接成一个行链表,由down指针域链接成一个列链表。则每个非0元素既是某个行链表中的一个结点,同时又是某个列链表中的一个结点,所有非0元素构成一个十字交叉的链表。称为十字链表。

1.节点

typedef struct Clone {
	int row, col;
	ele val;
	struct Clone* down, * right;//指向下面跟右边节点
}OLNode;

2.表

typedef struct Clnode {
	int rn, cn, tn;//行,列,非0数
	OLNode* rhead;//行指针 
	OLNode* chead;//列指针
}CrossList;

总结

有部分转载,详情见这里:这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码有点萌

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值