数据结构——5数组


一、二维数组及多维数组

1.数组的顺序存储

都是存储在一维线性表中
(1)按行
(2)按列

2.数组的地址计算

按行存储
    一维数组:Loc(A[ i ] ) = Loc(A[ 1]) +(i-1)size 

    二维数组:Loe (A [ i] [j] ) = Loe (A [ 1 ] [ 1 ]) + (n(i- 1 ) +j-1)size

    三维数组:Loe(A[i] [j] [ k ]) = Loe(A [ 1 ] [ 1] [ 1 ]) +((i-1)*m*n+(j-1 )*n+(k-L))*size 

注意:都是看线性表前面有多少个来计算

二、特殊矩阵

1.规律分布的特殊矩阵

(1)三角矩阵

上三角、下三角
在这里插入图片描述
存储位置:Loc[i, j] = Loc[1, 1] + (i * (i - 1) / 2 + j - 1)

元素获取:在这里插入图片描述

(2)带状矩阵

在这里插入图片描述

a.三对角带状矩阵特点

在这里插入图片描述

在以下条件下非零,其他元素均为零

b.三对角带状矩阵压缩存储方法

方法:按行存储非零元素
确定非零元素在一维数组空间中的地址:Loc (A[i][j]) = Loc (A[1][1]) + (前 i-1 行非零元素个数 + 前 i-1 行中前非零元素的个数) * size
前 i-1 行非零元素个数 : 3 * (i - 1) -1(因为第一行只有两个元素)
前 i-1 行中前非零元素的个数: j - i + 1
在这里插入图片描述

(3)稀疏矩阵

a.含义

非零元素个数低于总元素的30%

b.存储方式

三元组表
在这里插入图片描述
例子:

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

c.稀疏矩阵三元组表的类型定义
#include<stdio.h>
#define MAXSIZE 1000
typedef int ElementType;
//三元组
typedef struct
{
   
    int row, col;  //行,列
    ElementType e;
}Triples;
//三元组表
typedef struct
{
   
    Triples data[MAXSIZE + 1];  //data[0]未用
    int m, n, len;  //矩阵的行数、列数、非零元素的个数
}TTMatrix;  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值