数据结构知识点5-元素扩展的线性表:矩阵和广义表

本文介绍了矩阵的基本概念及其存储方式,探讨了顺序存储对于矩阵的适用性,并详细讲解了一维数组下标的计算方法。此外,文章还介绍了特殊矩阵如对称矩阵、稀疏矩阵的存储方法,以及十字链表在稀疏矩阵中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

矩阵

矩阵的基本概念

  1. 存取:给定一组下标,读出对应的数组元素;
  2. 修改:给定一组下标,存储或修改与其相对应的数组元素。

存取和修改操作本质上只对应一种操作——寻址。

矩阵应该采用何种方式存储?
矩阵没有插入和删除操作,所以,不用预留空间,适合采用顺序存储。

矩阵的存储结构?
设一维数组的下标的范围为闭区间[l, h],每个数组元素占用c个存储单元,则其任意元素ai的存储地址可由下式决定:
Loc(ai)=Loc(al)+(i-l)×c

在这里插入图片描述
常用的映射方法:

  1. 按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。
  2. 按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。
    在这里插入图片描述
  • 特殊矩阵:包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等。
  • 稀疏矩阵:矩阵中有很多零元素。
  • 压缩存储的基本思想:
    - 为多个值相同的元素只分配一个存储空间;
    - 对零元素不分配存储空间。

对称矩阵

特点:aij = aji
–>只存储下三角部分的元素。

在这里插入图片描述
在这里插入图片描述
下三角的元素,在数组中下标与i、j的关系:k = i * (i-1)/2 +j -1

十字链表

在这里插入图片描述

typedef int ElemType;
typedef struct Node
{
	ElemType data;
	int i, j;
	Node *down, *right;
}Node, *pNode;
typedef struct
{
	pNode *rowHead, *colHead;//行列头指针
	int mu, nu, tu;//行数 列数 非零元素个数
}CrossMatrix;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值