DS-数组和广义表计算相关

DS-数组和广义表计算相关


计算问题核心求 元素是第几个

多维数组的存储

元素的存储地址指该元素在内存的起始地址该元素前一个元素的末端位置

a i , j a_{i,j} ai,j的存储地址=初始地址 + + + ( a i , j a_{i,j} ai,j前的元素个数 ∗ * 单个元素所占存储单元)

做计算元素存储位置类型题前先理清个问题

  1. 数组的存储结构是几行几列并理清每行有几个元素&每列有几个元素

  2. 存储次序是行优先(一行一行的存)还是列优先(一列一列的存)

  3. 确定该元素所在行(列)前有几行(列)

  4. 确定所在行(列)中该元素前有几个元素

  5. 基地址和每个元素所占的存储单元

针对第一个问题,题目的条件常见的有

七行六列的数组…“或”二维数组A[0…6,0…5]“或”二维数组A[1…7,1…6]“或”二维数组A[7][6]

针对第二个问题,看清题目要求就行
在这里插入图片描述

针对第五个问题,题目中可能不会给基地址,而给出其他元素的存储地址(首个元素的地址即为基地址)

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

在这里插入图片描述

特殊矩阵的压缩存储

题型:求特殊矩阵A中的元素 压缩一维数组N中的位置(下标)

对称矩阵

对称矩阵的压缩要理清几个问题

  1. 搞清对称矩阵和一维矩阵的结构(编号是否从开始)

  2. 搞清存储次序是

    上三角部分按列存储下三角部分按行存储(这两种情况比较简单)

    上三角部分按行存储下三角部分按列存储(这两种情况比较恶心)

    建议画图!!!

  3. 根据i,j大小关系确定是否在所求区域,不是则互换i,j位置(i>=j下三角)

  4. 确定该元素所在行(列)前有几行(列)

  5. 确定该元素在所在行(列)有几个元素

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三角矩阵

计算参照对称矩阵,被忘了最后一个常数。

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

对角矩阵

三对角矩阵

对角矩阵下标从1,1开始,一维数组下标从0开始: k = 2 ∗ i + j − 3 k=2*i+j-3 k=2i+j3

对角矩阵下标从1,1开始,一维数组下标从1开始: k = 2 ∗ i + j − 2 k=2*i+j-2 k=2i+j2

对角矩阵下标从0,0开始,一维数组下标从0开始: k = 2 ∗ ( i + 1 ) + ( j + 1 ) − 3 = 2 ∗ i + j k=2*(i+1)+(j+1)-3=2*i+j k=2(i+1)+(j+1)3=2i+j

对角矩阵下标从0,0开始,一维数组下标从0开始: k = 2 ∗ ( i + 1 ) + ( j + 1 ) − 3 = 2 ∗ i + j + 1 k=2*(i+1)+(j+1)-3=2*i+j+1 k=2(i+1)+(j+1)3=2i+j+1

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

稀疏矩阵

稀疏矩阵的压缩存储办法是只存储非零元素(三元组和十字链表),不能随机存取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值