数组和广义表存储:矩阵压缩与广义表递归算法

需积分: 9 3 下载量 191 浏览量 更新于2024-08-19 收藏 263KB PPT 举报
该资源是一份关于数据结构课程的PPT,主要讲解了数组和广义表的相关知识,特别是矩阵的压缩存储以及广义表的递归算法。 在数据结构中,数组是一种基础且重要的数据组织形式。在第五章中,数组被详细地定义为一组具有固定数量和类型元素的数据集合,每个元素都有一个唯一的下标来标识其位置。对于一维数组,它可被视为线性表,元素间的顺序关系通过下标体现,且所有元素类型一致。例如,一个一维数组A可以表示为`(a1, a2, ..., an)`,其中`ai`是数组中的第i个元素。 二维数组是数组的一种扩展,可以视为具有两维索引的元素集合,通常用于处理表格数据。例如,一个二维数组`Am×n`由m行n列组成,可以按行或列展开成线性表。在编程中,二维数组可以定义为一维数组的数组,例如`Typedef ElemType Array2[m][n]`,这表示Array2是一个由m个长度为n的一维数组组成的数组。 数组的操作通常包括初始化、销毁、存取和修改元素。由于数组的大小在定义后通常是固定的,所以数组的操作相对简单,主要是针对元素的读写。 接着,课程讨论了数组的顺序表示和实现,特别是二维数组的存储方式。二维数组有两种常见的存储方式:以列序为主序和以行序为主序。在列序存储中,数据按照列优先的方式存储,而在行序存储中,数据则按照行优先的方式存储。例如,如果`LOC(A1)`是第一行的起始位置,那么在列序存储中,`LOC(A2)`将是第二行的起始位置,而在行序存储中,`LOC(A2)`将是第一列的下一个元素的位置。 至于三元组表,它是矩阵压缩存储的一种形式,特别适用于稀疏矩阵。在三元组表中,只存储非零元素的信息,包括对应的行号(i),列号(j),以及值(v)。例如,给定的三元组表表示了一个3x3矩阵,包含了非零元素的位置和值。 在本PPT中,还提到了广义表的定义和存储结构,以及如何用递归算法处理广义表,但具体细节没有给出。广义表是一种更通用的列表结构,可以包含其他列表作为元素,因此它可以用来表示复杂的结构。 这份资料涵盖了数组的理论基础,特别是二维数组的存储策略,以及三元组表在矩阵压缩存储中的应用,为进一步学习数据结构和算法提供了坚实的基础。