目录
多维数组
二维数组矩阵表示

数组的顺序存储
- 按行优先:将数组元素按行向量排列,第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的表尾。
一个表展开后所含括号的层数称为广义表的深度。
图示:


性质:
- 广义表的元素可以是子表,子表又可以含有子表,广义表是一个多层次结构的表,它可以用图形象的表示
- 广义表具有递归和共享的性质。例如:F就是一个递归的广义表,D表是共享的表
注意:() 为空表,长度为0;(()) 长度为1,表尾为空表。
链式存储结构
![]() | |
| 第一个结点tag是一个标志位 | 为0时,该结点是子表 为1时,该结点是原子结点 |
| 第二个结点 | 为data时,用来存放元素值 为slink时,存放子表的地址 |
| link域用来存放与本元素同一层的下一个元素对应结点的地址 元素是在该层的最后一个元素时,link的值为null | |
本文探讨了数据结构中的多维数组,包括二维数组的矩阵表示和顺序存储方式,详细阐述了按行优先和按列优先的存储原理,并介绍了如何计算数组元素的存储地址。接着,文章讲解了特殊矩阵的概念,以及广义表的基本介绍和链式存储结构,特别提到了广义表的递归和共享性质。链式存储结构中,结点包含标志位、元素值和子表地址,展示了其在表示复杂数据结构时的灵活性。

4647





