数据结构 数组和广义表习题 下载本文

内容发布更新时间 : 2024/12/22 18:55:43星期一 下面是文章的全部内容请认真阅读。

第五章 数组和广义表习题

一、选择题

1.已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e运算是 。 A.head(tail(LS)) B.tail (head(LS)) C.head(tail(head(tail(LS)))) D. head(tail(tail(head(LS)))) 2.若广义表A满足head(A)= tail(A),则A为 。 A.( ) B.(()) C.((),()) D.((),(),()) 3.广义表A=(a,b,(c,d),(e,(f,g))),则下面式子Head(Tail(Head(Tail(Tail(A)))))的值为 。 A.() B.(d) C.c D.d 4.稀疏矩阵一般的压缩存储方法有 两种。

A.二维数组和三维数组 B.三元组和散列表 C.三元组和十字链表 D.散列表和十字链表 5.已知矩阵A是一个对称矩阵,为了节省存储,将其下三角部分按行优先存放在一维数组B[1…n(n-1)/2]中,对下三角部分中任一元素aij(i>=j)在一维数组B的下标位置k值是 。 A.i(i-1)/2+j-1 B. i(i-1)/2+j C. i(i+1)/2+j-1 D. i(i+1)/2+j 6.已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子u的运算是 。 A.head(tail(tail(L))) B.tail(head(head(tail(L)))) C.head(tail(head(tail(L)))) D.head(head(tail(tail(L))))

7.广义表L=((a,b,c)),则L的长度和深度分别为 。 A.1和1 B.1和3 C.1和2 D.2和3 8. tail (head(((a,b,c,d,e))))= 。

A.a B.c,d C. D.(b,c,d,e)

9.二维数组A[10…20,5…10]采用列序方式存储,每个数据元素占4个存储单元,且A[10,5]的存储地址是1000,则A[20,9]的地址是 。 A.1216 B.1212 C.1256 D.1368

10.一个n*n的对称矩阵,如果以行或列为主序采用压缩存储,其容量为 。 A.n*n B.n*n/2 C.(n+1)*n/2 D.(n+1)*(n+1)/2 11.数组SZ[-3…5,0…10]含有元素数目为 。 A.88 B.99 C.80 D.90

12.二维数组M的成员是6个字符(每个字符占一个字节)组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M至少需要 个字节;M的第8行和第5列共占 个字节;若M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先方式存储时的 元素的起始地址一致。 (1)A.90 B.180 C.240 D.540 (2) A.108 B.114 C.54 D.60

(3) A.M[8][5] B.M[3][10] C.M[5][8] D.M[0][9] 二、填空题

1.需要压缩存储的矩阵有 矩阵和 矩阵。

2.广义表((a))的表头是 ,表尾是 ,表长是 ,表深是 。 3.对于一个二维数组A[m][n],如果每个元素所占单元为L,若按行序为主序存储,则任一元素A[i][j]相对A[0][0]的地址为 。

4.广义表(a,(a,b),d,e,((i,j),k))的长度是 ,深度是 。 三、判断题

1.若一个广义表的表头为空表,则此广义表亦为空表。( ) 2.广义表是线性表的推广,是一类线性数据结构。( )

1

3.任何一个非空广义表,其表头可能是单元素或广义表,其表尾必定是广义表。( ) 4.广义表是由零或多个原子或子表所组成的有限序列,所以广义表可能为空表。( ) 5.线性表可以看成是广义表的特例,如果广义表中的每个元素都是原子,则广义表便成为线性表。( )

6.广义表中原子个数即为广义表的长度。( ) 四、运算题

1.设有二维数组A[6*8],每个元素占6个字节存储,实现存放,A[0,0]的起始地址为1000,请计算:

(1)数组A的存储量;

(2)数组的最后一个元素元素A5,7的起始地址; (3)按行优先存放时,元素A1,4的起始地址; (4)按列优先存放时,元素A4,7的起始地址;

2.画出下列广义表的两种存储结构图:A=(( ),a,(b,(c,d)),(e,f))

2