数据结构1800题解析:数组与广义表的存储技巧

版权申诉
0 下载量 102 浏览量 更新于2024-07-01 收藏 138KB PDF 举报
"这份资源是关于数据结构的学习资料,包含了1800道关于数组和广义表的题目及完整答案,适用于考试复习。" 在数据结构中,数组和广义表是两种基本且重要的数据组织形式。数组是一种线性数据结构,其中元素在内存中以固定大小的块连续存储,可以通过索引来快速访问。广义表则是更灵活的数据结构,可以用来表示具有层次关系的数据。 1. 题目1中提到的是对称矩阵的压缩存储方式。对称矩阵只存储下三角或上三角部分,因为其余部分是对称的。对于10阶对称矩阵,a11是第一个元素,存储地址为1,由于它是对角线元素,a85位于对角线下方第7行第5列,所以它的地址是1+(7*10+4)=33,选B。 2. 题目2涉及二维数组的存储。数组A[1:6,0:7]的每个元素占用6个字节,总元素数量是(6-1)*(7-0)+1=42。因此,体积是42*6=252个字节,排除选项。按行存储时,A[1,0]到A[6,7]的地址依次增加,最后一个元素是A[6,7],其地址是0+252-6=246。同样,A[2,4]的地址是A[1,0]的地址加上(2-1)*42+3*6=96。按列存储时,A[5,7]的地址是A[0,7]的地址加上(5-1)*42+7*6=258。只有当行和列的元素个数相同时,即行列维数相同,按行和列存储的A[I,J]和A[J,I]地址才会相等,对应选项D。 3. 题目3考察了以列为主序存储数组。数组A[i, j],i=1到8,j=1到10,每个元素3字节。A[5, 8]是第5行第8列,以列为主序,存储时会先存储所有列的第1行,再存储第2行,以此类推。因此,A[5, 8]的地址是首地址BA加上(8-1)*3*8+(5-1)*3=222,选C。 4. 题目4是一个行主序存储的二维数组A[1..100, 1..100],每个元素2个存储单元。LOC[5, 5]表示第5行第5列的地址,是第5行的第5个元素,地址是10+((5-1)*100+4)*2=818,选B。 5. 题目5讨论的是按列优先次序存储的数组A[0..5,0..6]。A[5,5]是第6列的第6个元素,地址是1000+(5*(6+1)+5-1)*5=1205,选C。 6. 题目6是关于二维数组A[0:8,1:5]的存储,每个元素4字节。A[0,1]的地址是起始地址,A[5,5]是第5行第5列,地址是起始地址加上(5*9+4)*4=205,但题目没有给出起始地址,无法直接计算。 以上解答了6道关于数组和广义表存储方式及地址计算的问题,这些题目有助于理解数据结构中的数组布局和地址计算方法。对于准备数据结构考试或实际编程应用,掌握这些概念至关重要。