稀疏矩阵的压缩

        矩阵是带二维信息的数据,一般采用二维数组来存储。但是稀疏矩阵的有效信息数据不多,绝大多数都是无效信息不需要存储,这些矩阵如果使用二维数组来存储的话,会非常浪费存储空间,为了节约空间,我们对这些矩阵进行压缩。

1、三元组压缩
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

typedef struct Node
{
	int row;
	int col;
	int val;
}Node;
typedef struct Triplet
{
	Node *arr;//存储所有三元组的元素
	int cnt;//元素个数
	int r_max;//数组行数
	int c_max;//数组列数
}Triplet;

Triplet *create_triplet(int r,int c,int(*arr)[c],int cnt)
{
	//申请内存空间并初始化
	Triplet *triplet=malloc(sizeof(Triplet));
	triplet->arr=malloc(sizeof(Node)*cnt);
	//triplet->cnt=cnt;
	triplet->r_max=r;
	triplet->c_max=c;

	//遍历待压缩的二位数组,存储非零元素到三元组数组中
	int index=0;
	for(int i=0;i<r;i++)
	{
		for(int j=0;j<c;j++)
		{
			if(arr[i][j])
			{
				triplet->arr[index].row=i;
				triplet->arr[index].col=j;
				triplet->arr[index++].val=arr[i][j];
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值