设有数组 A[i,j],数组的每个元素长度为 3 字节,i 的值为 1 到 8 ,j 的值为 1 到 10,数组从内存首地址 BA 开始顺序存放,当用以列为主存放时,元素 A[5,8] 的存储首地址为?
答案: BA + 180。画出矩阵图,先算整列8×7,再算剩余的5个。BA+(8×7+5-1)×3=BA+180。
设有一个 10 阶的对称矩阵 A,采用压缩存储方式,以行序为主存储,a[1][1] 为第一元素,其存储地址为 1,每个元素占一个地址空间,则 a[8][5]的地址为?
答案:33。对称矩阵的压缩存储,意思就是只存半个矩阵。因为矩阵对称性,存半个矩阵就可以达到存整个矩阵的效果。题目等效为存储10阶的下三角矩阵。1+(1+7)×7/2+5-1=33。
将一个 A[1..100,1..100] 的三对角矩阵,按行优先存入一维数组B[1‥298] 中,A 中元素 A6665(即该元素下标 i = 66,j = 65),在 B 数组中的位置 K 为?
答案:195。三对角矩阵时有三条对角线的矩阵,这三条对角线也是对称的。对角线呈 “ \ ” 状。第一行和最后一行有两个元素,其余行都是三个元素。1×2+(66-2)×3+1=195。
有一个 100*90 的稀疏矩阵,非 0 元素有 10 个,设每个整型数占 2 字节,则用三元组表示该矩阵时,所需的字节数是?
答案:66。非零元有10个,表示三元组有11行,每行三个int型数字。11×3×2=66。
三维数组 a[4][5][6](下标从 0 开始计,a 有 4*5*6 个元素),每个元素的长度是 2,则 a[2][3][4] 的地址是 。(设a[0][0][0] 的地址是 1000, 数据以行为主方式存储)。
答案:1164。看清下标从0开始。看清下标从0开始。看清下标从0开始。三维数组a[4][5][6]对应三维坐标系中x轴0-5,y轴0-4,z轴0-3。数据一行一行存储,一层满了再存下一层,形成立体结构。(5×6×2+3×6+5-1)×2+1000=1164。
设广义表 L = ((), ()), 则:head(L)是 ______ ;tail(L)是_______; L 的长度是 ______ ;深度是 _____ 。
答案:() (()) 2 2。小技巧:L从右往左数,遇到(之前,)数量就是深度。
下面说法正确的有( )。
A. 广义表的表尾总是一个广义表
B. 广义表的表头总是一个广义表
C. 广义表可以是一个多层次的结构
D. 广义表难以用顺序存储结构
答案:ACD。广义表一般用链式存储,顺序存储不利于插入删除数据,并且对存储单元限制较多。
当广义表中的每个元素都是原子时,广义表便成了____?
答案:线性表。
已知广义表 L = ((x,y,z),a,(u,t,w)),从 L 表中取出原子项 t 的运算是?
答案:tail(L)、tail(L)、head(L)、tail(L)、head(L)。
广义表 A = (a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))的值为?
答案:d。按步骤:A=(b,(c,d),(e,(f,g))) A=((c,d),(e,(f,g))) A=(c,d) A=(d) A=d。