压缩存储对称矩阵与二维数组的地址计算

需积分: 13 2 下载量 85 浏览量 更新于2024-07-22 2 收藏 372KB PDF 举报
"数据结构广义表的文档" 在数据结构中,广义表是一种抽象的数据类型,它可以表示具有层次关系或树形结构的数据。广义表由一系列原子(可以是简单数据类型如整数、字符串,也可以是其他广义表)组成,可以嵌套包含其他广义表。广义表的表示通常有两种方式:链式表示和顺序表示。 1. 链式表示:每个元素都有一个指向下一个元素的指针,包括头指针和尾指针,适用于元素个数不确定或变化的情况。 2. 顺序表示:将广义表的所有元素连续存储在数组中,适用于元素个数固定且已知的情况,通常需要考虑如何处理嵌套元素。 题目中的内容主要涉及到数组和压缩存储的矩阵,这是数据结构中线性表的另一种形式。在矩阵存储中,特别是对称矩阵,由于其特性,只需要存储对角线以下或以上的元素,以节省空间。例如,对于一个10阶的对称矩阵,如果以行为主序存储,a11是第一个元素,地址为1,那么a85(对称矩阵的第8行第5列)实际上就是第15个元素(因为对角线上有10个元素,然后是8行,每行一个元素),所以它的地址可以通过简单的计算得到。 2. 二维数组的存储方式有两种:按行存储和按列存储。按行存储时,元素是按照从左到右、从上到下的顺序存储;按列存储则是先存储所有列的最上面元素,然后依次向下。在题目中,数组的体积是指所有元素占用的字节数,地址计算则根据存储方式和数组的维度来确定。例如,A[2,4]在按行存储时,相对于A[1,0]会向右移动4个元素,再向下移动1个元素;而在按列存储时,会先向下移动4行,再向右移动2列。 3. 对于数组A[i,j],其元素长度为3字节,当以列为主存放时,元素A[5,8]需要找到第5行(从1开始计数)的第8列,因为是按列存储,所以是先存储8行,然后在第5个位置开始。 4. 行序为主序存储的二维数组,可以通过公式LOC[i,j] = (j-1)*行长度 + (i-1)*元素大小 + 基地址来计算地址,其中行长度是每一行的元素数量乘以每个元素的大小。 5. 数组按列优先次序存储时,A[5,5]的地址可以通过计算其在存储序列中的位置得出,先考虑列优先,存储了前5列后才到第6列,再在第5行找到A[5,5]。 6. 对于二维数组A[0..8,1..5],每个元素用4个字节存储,从地址0开始,可以计算最后一个元素A[3,5]的地址,考虑到它是第3行第5列,而行是按顺序存储的。 以上内容涵盖了数据结构中的广义表概念,以及数组(特别是矩阵)的压缩存储、地址计算方法。理解这些知识点对于理解和操作复杂数据结构至关重要,它们是计算机科学和软件工程的基础。