【数据结构】(七)矩阵的压缩存储,C++类的友元

本文介绍了矩阵的压缩存储方法,包括对称矩阵、下三角矩阵、对角矩阵和稀疏矩阵的压缩,重点讲解了稀疏矩阵的三元组表示和十字链表结构,并提供了C++类的友元概念,用于理解在类中如何访问私有属性。此外,还提及了在不使用友元的情况下,如何通过get函数保持封装。
摘要由CSDN通过智能技术生成

矩阵的压缩存储

所有的矩阵你都可以通过推导得出其在一位数组或者链表中的关系。

(一).对称矩阵压缩:
在这里插入图片描述
在这里插入图片描述
(二)下三角和上三角矩阵:
解释下三角矩阵在后面加一个C表示为0即可,
只要算到上三角空白区域就去C中的值。

在这里插入图片描述
在这里插入图片描述
(三)对角矩阵:
在这里插入图片描述
(四)稀疏矩阵的压缩存储:
引入三元组:行号, 列号, 非零元素值:
在这里插入图片描述
利用顺序存储方式:
在这里插入图片描述
可以用结构体也可用类封装:
在这里插入图片描述
(五)十字链表:
适用于十字链表需要频繁修改的时候
含义:
在这里插入图片描述
图解:
在这里插入图片描述
C++类定义:
在这里插入图片描述
.h文件:

#pragma once
#include<iostream>
using namespace std;
#include <string>
#define Max 100
#define ERROR 0
#define OK 1

typedef struct  //三元组
{
   
	int line;   //行
	int row;    //列
	int item;   //值
}Trip;


class TripMN
{
   
private:
	Trip  dat[Max];
	int L, R, num;   //行 ,列, 非零元个数
public:
	TripMN()       //自我构造
	{
   
		L = 0;
		R = 0;
		num = 0;
	}

	TripMN(int m, int n)   //创建对象时完成对属性的初始化
	{
   
		L = m;
		R = n;
		num = 0;
	}

	~TripMN()
	{
   
		
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值