logo资料库

数据结构第五章作业答案参考(C语言).docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
第五章 数组与广义表作业(共 50 分) 一、选择题(每题 2 分,共 20 分)。 1.两个串相等必有( A ,D(或写 D 也可以得全分))。 A.串长度相等 B.串长度任意 C.串中各位置字符任意 D.串中各位置字符均对应相等 2.对称矩阵的压缩存储:以行序为主序存储下三角中的元素,包括对角线上的元素。二维 下标为( i, j ),存储空间的一维下标为 k,给出 k 与 i, j (i
C.表长为 4,表头为空表,表尾为((d, f)) D.表长为 3,表头为(()),表尾为((a), (b, c, (d), ((d, f)))) 10.广义表 A=(a,b,c,(d,(e,f))),则 Head(Tail(Tail(Tail(A))))的值为( A )。(Head 与 Tail 分别 是取表头和表尾的函数) A.(d,(e,f)) B.d C.f D.(e,f) 二、填空题(每空 2 分,共 8 分)。 1.一个广义表为 F = (a, (a, b), d, e, (i, j), k),则该广义表的长度为 6 。GetHead(GetTail(F))= (a,b) 。 2.一个 n*n 的对称矩阵,如果以行或列为主序压缩存放入内存,则需要 n(n+1)/2 个存储单元。 3.有稀疏矩阵如下: 0 7 -3 0 0 它的三元组存储形式为: (1,3,5)(2,1,7)(3,1,-3) 5 0 0 0 0 0 0 0 4 2 (4,2,4) (5,2,2)。 三、综合题(共 22 分)。 1.(共 8 分)稀疏矩阵如下图所示,描述其三元组的存储表示,以及转置后的三元组表示。 -3 0 0 0 6 4 0 0 0 0 15 0 转置前(4 分): 0 0 0 8 0 0 7 0 (1,2,-3)(2,1,4)(2,3,6)(3,5,7)(4,2,15)(4,4,8) (注:也可以数组表示形式) 转置后(4 分): (1,2,4)(2,1,-3)(2,4,15)(3,2,6)(4,4,8)(5,3,7) (注:也可以数组表示形式) 2. (共 14 分)稀疏矩阵 M 的三元组表如下,请填写 M 的转置矩阵 T 的三元组表,并按 要求完成算法。
(1)写出 M 矩阵转置后矩阵 T 的三元组存储(6 分): M 的三元组表: T 的三元组表: i 2 3 4 4 5 5 j 1 2 2 3 1 3 e 3 4 5 5 6 6 i 1 1 2 2 3 3 j 2 5 3 4 4 5 e 3 6 4 5 5 6 (2)如下提供了矩阵采用三元组存储时查找指定行号(m)和列号(n)元素值的算法框架, 将代码补充完整(每空 2 分,共 8 分)。 typedefstruct{ inti,j; ElemType e; }Triple; typedefstruct{ Triple data[MAXSIZE+1]; //data[0]未用 //矩阵的行数,列数和非零元的个数 intmu,nu,tu; }TSMatrix; voidFind_TSMatrix(TSMatrix M, int m, int n, ElemType&e) //M 为要查找的稀疏矩阵三元组存储,m 为要查找的元素的行号,n 为列号,e 为查找后得 到的值。 { i=1 ; i<=M.tu ;i++) for ( if( M.data[i].i==m&&M.data[i].j==n ) { e=M.data[i].e; break ; } if( i>M.tu) e=0; }
分享到:
收藏