特殊矩阵的压缩存储(C语言)

Posted bfhonor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特殊矩阵的压缩存储(C语言)相关的知识,希望对你有一定的参考价值。

一、一维数组的存储结构

在这里插入图片描述

  • 各数组元素大小相同,且物理上连续存放。
  • 数组元素a[i] 的存放地址 = LOC + i * sizeof(ElemType) (0≤i<10)
  • 注:除非题目特别说明,否则数组下标默认从0开始

二、二维数组的存储结构

在这里插入图片描述

  • M行N列的二维数组 b[ M ][ N ] 中,若按行优先存储,则
  • b[ i ][ j ] 的存储地址 = LOC + ( i*N + j ) * sizeof(ElemType)
    在这里插入图片描述
  • M行N列的二维数组 b[M][N] 中,若按列优先存储,则
  • b[i][j] 的存储地址 = LOC + ( j*M+ i ) * sizeof(ElemType)

三、普通矩阵的存储

在这里插入图片描述

  • 可用二维数组存储
  • 注意:描述矩阵元素时,行、列号通常从 1 开始;而描述数组时通常下标从0开始(具体看题目给的条件,注意审题!)
    在这里插入图片描述
  • 某些特殊矩阵可以压缩存储空间

(一)对称矩阵的压缩存储

在这里插入图片描述

  • 若 n 阶方阵中任意一个元素 ai,j都有ai,j = aj,i则该矩阵为对称矩阵

  • 普通存储:n*n 二维数组

  • 压缩存储策略:只存储主对角线+下三角区(或主对角线+上三角区)
    在这里插入图片描述

  • 思考:
    ①数组大小应为多少?
    ②站在程序员的角度,对称矩阵压缩存储后怎样才能方便使用?
    ① (1+n)*n/2
    ②可以实现一个“映射”函数矩阵下标à一维数组下标
    在这里插入图片描述
    在这里插入图片描述

(二)三角矩阵的压缩存储

在这里插入图片描述

  • 下三角矩阵:除了主对角线和下三角区,其余的元素都相同
  • 上三角矩阵:除了主对角线和上三角区,其余的元素都相同
    在这里插入图片描述
    在这里插入图片描述

(三)三对角矩阵的压缩存储

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

(四)稀疏矩阵的压缩存储

在这里插入图片描述
在这里插入图片描述

以上是关于特殊矩阵的压缩存储(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

C/C++语言数据结构快速入门(代码解析+内容解析)特殊矩阵

c语言根据以下描述编写一个程序使其能完成对稀疏矩阵的压缩与还原,即给定稀疏矩阵可以压缩存储一个三元组

C++ 特殊矩阵的压缩存储算法

[数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)

特殊矩阵的压缩存储

特殊矩阵的压缩存储