第5章 数组与广义表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章数组与广义表
【数组基础知识题】
1.假设有二维数组A6×8,每个元素用相邻的 6 个字节存储,存储器按字节编址。已知 A 的起始存储位
置(基地址)为1000,计算:
(1) 数组A 的体积(即存储量);
(2) 数组A 的最后一个元素a57的第一个字节的地址;
(3) 按行存储时,元素a14的第一个字节的地址;
(4) 按列存储时,元素a47的第一个字节的地址。
2. 假设按低下标优先存储整数数组A9×3×5×8时,第一个元素的字节地址是100,每个整数占四个字节。问下列元素的存储地址是什么?
(1) a0000(2) a1111(3) a3125(4) a8247
3. 按高下标优先存储方式(以最右的下标为主序),顺序列出数组A2×2×3×3中所有元素a ijkl,为了简化表达,可以只列出(i,j,k,l) 的序列。
4. 将下面的式子改写为一个等式的形式。
5. 设有上三角矩阵(a ij)n×n,将其上三角元素逐行存于数组B[m] 中( m 充分大) ,使得B[k]=a ij且k=f1(i)+f2(j)+c。试推导出函数f1,f2和常数c (要求f1和f2中不含常数项)。
6. 设有三对角矩阵(a ij)n×n,将其三条对角线上的元素存于数组B[3][n] 中,使得元素B[u][v]=a ij,试推导出从(i,j) 到(u,v) 的下标变换公式。
7. 设有三对角矩阵(a ij)n×n,将其三条对角线上的元素逐行地存于数组B[3n-2] 中,使得B[k]=a ij,求:
(1) 用i,j 表示k 的下标变换公式;
(2) 用k 表示i,j 的下标变换公式。
【广义表基础知识题】
1. 求下列广义表操作的结果:
(1) GetHead【(p,h,w)】;
(2) GetTail【(b,k,p,h)】;
(3) GetHead【((a,b),(c,d))】;
(4) GetTail【((a,b),(c,d))】;
(5) GetHead【GetTail【((a,b),(c,d))】】;
(6) GetTail【GetHead【((a,b),(c,d))】】;
(7) GetHead【GetTail【GetHead【((a,b),(c,d))】】】;
(8) GetTail【GetHead【GetTail【((a,b),(c,d))】】】。
注意:【】是函数的符号。
2. 利用广义表的GetHead 和GetTail 操作写出如上题的函数表达式,把原子banana 分别从下列广义表中分离出来。
(1) L1 = (apple,pear,banana,orange);
(2) L2 = ((apple,pear),(banana,orange));
(3) L3 = (((apple),(pear),(banana),(orange)));
(4) L4 = (apple,(pear),((banana)),(((orange))));
(5) L5 = ((((apple))),((pear)),(banana),orange);
(6) L6 = ((((apple),pear),banana),orange);
(7) L7 = (apple,(pear,(banana),orange));
3. 按5.5.1节中所示结点结构,画出下列广义表的存储结构图,并求它的深度。
(1) ((( )), a, ((b, c), ( ), d), (((e))))
(2) ((((a), b)), ((( ), (d)), (e, f)))
4. 已知右侧各图为广义表的存储结构图,其结点结构和
5.5.1节相同。写出各图表示的广义表。