06 数组与广义表 | 数据结构与算法
1. 数组
1. 数组的定义
- 数组:数组 是一组偶对(下标值,数据元素值)的集合。在数组中,对于一组有意义的下标,都存在一个与其对应的值。一维数组对应着一个下标值,二维数组对应着两个下标值
- 数组的特点
- 是由
个具有相同数据类型的数据元素a1
,a2
,...,an
组成的有序序列,且该序列必须存储在一块地址连续的存储单元中 - 数组是一种随机存取结构,给定一组下标,就可以访问与其对应的数据元素
- 数组中的数据元素个数是 固定 的
- 是由
- 直观的
维数组:以二维数组为例,将二维数组看成是一个定长的线性表,其每个元素又是一个定长的线性表
2. 数组的存储形式
- 存储形式:由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一列序列,然后将这个线性序列存放在存储器中。由于对数组一般不做插入和删除操作,也就是说,数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化。因此,一般都是采用顺序存储的方法来表示数组
- 存储方式
- 行优先顺序:将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。以二维数组为例,按行优先顺序存储的线性序列为:
- 列优先顺序:将数组元素按列向量排列,第j+1个列向量紧接在第j个列向量之后,A的m × n个元素按列优先顺序存储的线性序列为:
- 行优先顺序:将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。以二维数组为例,按行优先顺序存储的线性序列为:
2. 矩阵的压缩存储
1. 对称矩阵
2. 三角矩阵
3. 稀疏矩阵 的压缩
-
压缩形式:三元组表示法
(i, j, val)
,其中i
,j
分别表示行号列号,val
表示数值,且以行优先存放 -
稀疏矩阵 快速转置 算法
- 本质:记录要存放的位置
- 算法
3. 广义表
- 定义:广义表(
,又称为列表):是由 个元素组成的有穷序列:Lst = (a1, a2, ..., an)
其中ai
或者是原子项,或者是一个广义表, 为它的长度。若ai
是广义表,则称为 子表。 - 与线性表的区别:线性表的数据元素都是 相同 的数据类型,但是广义表的数据元素可以还是广义表
- 性质
- 层次性:广义表可以是一个多层次的结构
- 共享性:一个广义表可以被其他广义表所共享
- 递归性:广义表可以是本身的子表
- 概念
- 广义表的长度:广义表中元素的数目
- 表头:非空广义表的 第一个元素
- 表尾:除表头元素之外,其余元素构成的 广义表
- 深度:广义表中括号的重数
List
长度 表头 表尾 深度 A = ()
0 无定义 无定义 1 B = (e)
1 e
()
2 C = (a, (b, c, d))
2 a
((b, c, d))
2 D = ((), e, (a, (b, c, d)))
3 ()
(e, (a, (b, c, d)))
3 E=(a, E)
2 a
(E)
__EOF__

本文作者:RadiumGalaxy
本文链接:https://www.cnblogs.com/RadiumGalaxy/p/16803849.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/RadiumGalaxy/p/16803849.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
标签:
Courses
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)