收藏 分享(赏)

第5章 数组和广义表.doc

上传人:j35w19 文档编号:7244204 上传时间:2019-05-10 格式:DOC 页数:4 大小:58KB
下载 相关 举报
第5章 数组和广义表.doc_第1页
第1页 / 共4页
第5章 数组和广义表.doc_第2页
第2页 / 共4页
第5章 数组和广义表.doc_第3页
第3页 / 共4页
第5章 数组和广义表.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、第五章习题参考答案一、简答题1【参考答案】 :数组是一组具有相同数据类型的数据集合。数据元素按次序存储于一段地址连续的内存空间中。可以通过下标找到存放该元素的存储地址,访问该数据元素的值。数组中的每一个元素和下标惟一对应。访问数组中任意指定的数据元素形式是,数组名下标 。举例略。2【参考答案】 :数组是一组具有相同数据类型的数据集合。数据元素按次序存储于一段地址连续的内存空间中。即数组是数据元素的线性组合,类似于顺序存储结构的线性表。3【参考答案】 :在 n 阶方阵 A 中,若元素满足下述性质:aij=aji (0i,jn-1)则称 A 为 n 阶对称矩阵。三角矩阵是指 n 阶矩阵中上三角(不

2、包括对角线)或下三角(不包括对角线)中的元素均为常数 c 或为 0 的 n 阶方阵。以主对角线划分,三角矩阵有上三角和下三角两种。在 n 阶矩阵 A 中,所有的非零元素都集中在以对角线为中心的带状区域中,则称 A 为 n 阶对角矩阵。实质上,除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素均为零或为常数 c。稀疏矩阵压缩存储方法有两类:顺序存储结构和链式存储结构。共同点:为了节省存储单元,可只存储非零元素,压缩零元素的存储空间;非零元素的分布一般是没有规律的;在存储非零元素的同时,还必须存储非零元素所在的行号、列号,才能惟一确定非零元素是矩阵中的哪一个元素。稀疏矩阵中的所有非

3、零元素构成了三元组线性表。4【参考答案】 :一个阶数较大的 mn 矩阵中,设有 s 个非零元素,如果 smn 时,则称该矩阵为稀疏矩阵。准确的讲,在矩阵 A 中,有 s 个非零元素。令 e=s/(mn),称 e 为矩阵的稀疏因子。通常认为e0.05 时,称矩阵 A 为稀疏矩阵。特点:非零元素分布没有规律,而且很少,远小于矩阵中的元素总个数。采用压缩存储,节省存储空间,只存储非零元素,并且每个非零元素都需要一个三元组(i,j,a ij)惟一表示。5【参考答案】 :广义表是 n(n0)个元素构成的一个序列,则广义表的一般表示与线性表相同:LS=(a1,a2,a3,ai,an)其中,LS 为广义表(

4、a 1,a2,a3,ai,an)的名称,n 表示广义表的长度,即广义表的包含元素的个数;当 n=0 时,则称为空表。广义表的特性:(1)广义表是一种线性结构。广义表的数据元素之间有着固定的相对次序,如同线性表。(2)广义表也是一种多层次的结构。当广义表的数据元素中包含子表时,该广义表就是一种多层次的结构。(3)广义表可为其他广义表共享。(4)广义表可以是一个递归表。(5)任何一个非空广义表 LS 均可分解为表头 head(LS)=a1 和表尾 tail(LS)=(a2,a3,an)两部分。6【参考答案】 :对于三对角矩阵可按行为主序的方式,只将矩阵 A 中的非零元素压缩存储到一维数组 SA 中

5、。矩阵 A 中第 0 行和第 n-1 行都只有 2 个非零元素,其余各行有 3 个非零元素。对于不在第 0 行的非零元素 aij 来说,它前面有 i 行元素,共 2+3(i-1)个元素;第 j 列前有 j-(i-1)个数据元素。所以,用i 和 j 表示 k 的下标变换公式为:k=2i+j+1.7【参考答案】 :(1)三元组表示为: (1,3,8),(2,4,9),(4,1,3),(4,5,15)(2)稀疏矩阵三元组的顺序存储结构数组的下标 i(行下标) j(列下标) value0 1 3 81 2 4 92 4 1 33 4 5 15(3)十字链表表示:1 3 8 2 4 9 4 5 155

6、4 1 3二、选择题【1】B 【2】C 【3】A 三、实验题1【参考答案】 :class MultiMatrix public static void main(String args) int a= 9, 2, 5, 9,2, 0, 3, 7,15, 4, 5, 6,8, 3, 12, 5;MultiMatrix mm=new MultiMatrix(); mm.mMatrix(a); public void mMatrix(int a) /求主对角线元素之和int sum = 0; int i; for(i = 0; i 4; i+) sum += aii; System.out.prin

7、tln(“矩阵 A 的主对角线元素之和为:“+sum); 2【参考答案】 :public class MultiMatrix int multiplyMatrix; public static void main(String args) int a= 1, 5, 7, 3,3, 6, 3, 9,1, 2, 8, 7,0, 3, 1, 9,3, 2, 5, 4 ;int b= 3, 9, 1, 4,5, 6, 7, 9,3, 2, 7, 2,9, 3, 1, 5,1,8,0,8 ;MultiMatrix mm=new MultiMatrix(); mm.mMatrix(a,b); mm.dis

8、play(); public void mMatrix(int a,int b) /进行矩阵加法运算multiplyMatrix=new inta.lengthb0.length; for (int i = 0; ia.length; i+) for (int j = 0; jb0.length; j+) multiplyMatrixij=aij+bij; public void display() /输出数组中的数据元素for (int i = 0; imultiplyMatrix.length; i+) for (int j = 0; jmultiplyMatrixi.length; j+

9、) System.out.print (multiplyMatrixij+“ “); System.out.println (“); 四、思考题1【参考提示】:数组是一组具有相同数据类型的数据集合。数据元素按次序存储于一段地址连续的内存空间中。即数组是数据元素的线性组合,类似于顺序存储结构的线性表。2【参考提示】:稀疏矩阵转置最简单的方法是把三元组表中的行与列的内容互换,然后再按照新的的行号对各三元组重新排序,但是其时间复杂度为 O(n2),n 为稀疏矩阵的阶数。快速转置算法的思想建立辅助数组 rowSize 和 rowStart,记录矩阵转置后各行非零元素个数和各行元素在转置三元组表中开始存放位置。扫描矩阵三元组表,根据某项的列号,确定它转置后的行号,查 rowStart 表,按查到的位置直接将该项存入转置三元组表中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报