二维数组存储与广义表:数组和广义表第五章解析

需积分: 9 3 下载量 71 浏览量 更新于2024-08-19 收藏 263KB PPT 举报
"本资源为数据结构课程中的第五章,主要讲解数组和广义表的相关概念及实现。其中,重点介绍了地址计算在二维数组存储中的应用。" 在数据结构课程中,数组是一种基本且重要的数据组织形式。数组的定义是通过一组下标来标识其元素,每个元素都有一个唯一的坐标,即下标。例如,对于一维数组,它是一个线性表,元素间的顺序关系由下标体现,所有元素通常具有相同的类型。而在二维数组中,每个元素对应一对下标(i, j),表示为aij,二维数组可以被视为由多个一维数组(行或列)组成的结构。 地址计算在数组的存储中起着关键作用。在行主序存储方式下,二维数组Am×n中任意元素aij的存储位置可以通过以下公式计算:LOC[i,j]=LOC[1,1]+(n*(i-1)+j-1)*L,其中LOC[i,j]表示aij的存储位置,LOC[1,1]是数组的基址(a11的位置),L表示每个数组元素占用的存储单元数。这种计算方式表明,一旦确定了数组的维度大小,就可以便捷地定位任何元素的存储位置。 数组的顺序表示通常指的是将数组元素按照一定的顺序存储在连续的内存空间中。以二维数组为例,有两种常见的存储方式:行主序和列主序。行主序(BASIC, PL/1, COBOL, PASCAL, C语言常用)是将数组元素按照行的顺序依次存储,而列主序(FORTRAN常用)则是按列的顺序存储。这两种方式在地址计算上有所区别,但都能有效地支持元素的存取。 数组的操作相对简单,一旦定义了数组,其维度和边界就不变,因此主要的操作包括存取元素和修改元素。在实际编程中,通常使用数组类型来定义数据结构,例如在C语言中,可以通过typedef定义二维数组类型,使其等效于一维数组的数组类型。 在本课程的第五章中,还将深入讨论矩阵的压缩存储,这是一种节省存储空间的技巧,特别是当处理稀疏矩阵时。此外,还将介绍广义表的定义、存储结构以及递归算法,广义表可以看作是线性表的推广,允许元素自身也是列表,提供了更灵活的数据表示。 本资源涵盖了数组的基本概念、地址计算方法、顺序存储结构、以及对数组和广义表的高级操作,是学习数据结构的重要参考资料。