【数据结构】——多维数组和广义表

目录

多维数组

二维数组矩阵表示

数组的顺序存储

计算数组元素的存储地址

特殊矩阵

广义表

基本介绍

链式存储结构

多维数组


二维数组矩阵表示

数组的顺序存储

  • 按行优先:将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。a00, a01, a02 ... a(m-1)(n-1)
  • 按列优先:将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量之后。a00, a10, a20 ... a(m-1)(n-1)

计算数组元素的存储地址

要知道:开始存储的结点地址(基地址)、维数和每维的上 下界、每个元素所占用的单元数。

  • 每个元素占d个存储单元
  • 数组元素a(ij),位于第i行,第j列
  • 它的前面共有i*n+j个元素

公式:LOC(a(ij)) = LOC(a(00)) + (i*n+j)*d

例题:

特殊矩阵

广义表


基本介绍

概述:n(n≥0)个元素a1,a2,...,a(n)的有限序列,a(i)或者是原子项,或者是一个广义表,记作LS=(a1,a2,...,a(n))。第一个元素a1是LS的表头,其余元素成的表称为LS的表尾。

一个表展开后所含括号的层数称为广义表的深度。

图示:

 

性质:

  1. 广义表的元素可以是子表,子表又可以含有子表,广义表是一个多层次结构的表,它可以用图形象的表示
  2. 广义表具有递归和共享的性质。例如:F就是一个递归的广义表,D表是共享的表

注意:() 为空表,长度为0;(()) 长度为1,表尾为空表。

链式存储结构

第一个结点tag是一个标志位

为0时,该结点是子表

为1时,该结点是原子结点

第二个结点

为data时,用来存放元素值

为slink时,存放子表的地址

link域用来存放与本元素同一层的下一个元素对应结点的地址

元素是在该层的最后一个元素时,link的值为null


  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

South.return

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值