首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对于m行 n列的稀疏矩阵M,进行转置运算后得到n行m列的矩阵MT,如图2-3所示。 为了压缩稀疏矩阵的
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对于m行 n列的稀疏矩阵M,进行转置运算后得到n行m列的矩阵MT,如图2-3所示。 为了压缩稀疏矩阵的
admin
2008-05-15
57
问题
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对于m行 n列的稀疏矩阵M,进行转置运算后得到n行m列的矩阵MT,如图2-3所示。
为了压缩稀疏矩阵的存储空间,用三元组(即元素所在的行号、列号和元素值)表示稀疏矩阵中的一个非零元素,再用一维数组逐行存储稀疏矩阵中的所有非零元素(也
称为三元组顺序表)。例如,图2-3所示的矩阵M相应的三元组顺序表如表2-1所示,其转置矩阵MT的三元组顺序表如表2-2所示。
表2-1
表2-1
函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵M进行转置运算。
对M实施转置运算时,为了将M中的每个非零元素直接存入其转置矩阵MT三元组顺序表的相应位置,需先计算M中每一列非零元素的数目(即MT中每一行非零元素的数目),并记录在向量num中;然后根据以卞关系,计算出矩阵M中每列的第一个非零元素在转置矩阵MT三元组顺序表中的位置。
cpot[0]=0
cpot[j]=cpot[j-1)+num[j-1]/*j为列号*/
类型ElemType、Triple和Matnx定义如下:
typedef int ElemType;
typedef struct{ /*三元组类型*/
int r,c; /*矩阵元素的行号、列号*/
ElemType e; /*矩阵元素的值*/
}Triple;
typedef struct{ /*矩阵的三元组顺序表存储结构*/
int rows,cols,elements;/*矩阵的行数、列数和非零元素数目*/
Triple data [MAXSIZE];
}Matrix;
【C函数】
int TransposeMatrix (Matrix M)
{
int j,q,t;
int *num, *spot;
Matrix MT; /* MT是M的转置矩阵*/
num= (int *)malloc(M.cols*sizeof(int));
cpot= (int *)malloc(M.cols*sizeof(int));
if (!num || !cpot)
return ERROR;
MT.rows =(1); /* 设置转置矩阵MT行数、列数和非零元数目*/
MT.cols =(2);
MT. elements = M. elements;
if (M.elements > 0) {
for(q = 0; q < M.cols; q++)
num[q] = 0;
for(t = 0; t < M.elements; ++t) /*计算机阵M中每一列非零元素数目 */
num.[M.data [t] . c] ++;
/*计算矩阵M中第列第一个非零元素在其转置矩阵三元组顺序表中的位置*/
(3);
for(j = 1;j < M.cols; j++)
spot [j] =(4);
for(t = 0; t < M.elements;t++){
j =(5); /* 取矩阵M的一个非零元素的列号存入j*/
q = cpot[j];
MT.data[q].r = M.data[t].c;
MT.data[q].c = M.data[t].r;
MT.data[q].e = M.data[t] .e;
++cpot[j]; /* 计算M中第j列的下一个非零元素的目的位置*/
}/* for */
}/* if */
free(num);free(cpot);
/*此处输出矩阵元素,代码省略*/
return OK;
)/*TransposeMatrix*/
选项
答案
(1)M.cols (2)M.rows (3)cpot[0]=0,或其等价形式 (4)cpot[j-1]+num[j-1],或其等价形式 (5)M.data[t].c,或其等价形式
解析
本题考查稀疏矩阵的压缩存储及转置运算在压缩存储结构上的实现。虽然从题干部分的描述来看,有一定的难度,但代码中要求完善的部分却很简单,因此,题目要求的是以对应于算法描述的方式机械地实现程序。
转置矩阵的行数、列数分别等于原矩阵的列数、行数,转置矩阵第i行第j列的元素就是原矩阵第j行第i列的元素。
若采用二维数组存储矩阵元素,则矩阵的转置运算是及其简单的。例如,已知有m行n列的矩阵M矩阵,求其转置矩阵MT,则常见的代码形式如下:
for(i=0; i<m; i++ )
for(j=0;j<n;j++)
MT[j,i) ;M[i,j];
当采用三元组表顺序存储稀疏矩阵中的非零元素时,简单交换每个元素的行号和列号即可实现转置运算,但是转置后元素的存储顺序发生了变化,原矩阵的非零元素按行存储,转置以后则按列存储,如下表所示。
因此,还需要对转置矩阵MT的三元组表按行号进行排序。
本题目中给出的方法是:在进行转置运算时就安排好每个元素在其转置矩阵中按行存储时的位置,这样就需要一些辅助运算,即先计算M中每一列非零元素的数目(即 MT中每一行非零元素的数目),并记录在向量num中,然后计算元素在转置矩阵中三元组表的位置。
在程序中以下代码计算矩阵M每列的元素数目:
for(q=0; q<M.cols;q++) /*初始化向量num*/
num[q]=0;
for(t=0;t<N.elements;++t)/*计算矩阵M中每一列非零元素数目*/
num[M.data[t].c]++; /*M.data[t).c为M中第t个非零元素的列号*/
以题中所给的矩阵为例,经计算后,向量num[]={1,2,0,1,2),即第0列有一个非零元素,第1列有两个非零元素,第2列没有非零元素,依此类推。
计算出向量num[]后,根据以下关系,可计算出矩阵M中每列的第一个非零元素在转置矩阵MT三元组顺序表中的位置。
cpot[0]=0 /*设置M的第0列的第一个非零元素在MT三元组表中的位置*/
cpot[j]=cpot[j-1]+ num[j-1l /*j为列号*/
第j-1列第一个非零元素的位置加上本列非零元素的个数即是第j列的第一个非零元素在MT三元组表中的位置。
转载请注明原文地址:https://kaotiyun.com/show/WsjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
某关系表定义了“姓名”、“身份证号”、“性别”、“年龄”4个字段,其中(60)字段可以作为此关系表的主键。
以下文件类型中,除__________外,都属于可执行文件。
计算机处理的数字数据有数值数据和字符数据之分。对信息处理技术员来说,它们的主要区别是______。
(68)________________属于人工智能的应用。
某企业要求将各销售部门上月的销售额制作成图表。________________能直观形象地体现各销售部门的业绩以及在企业总销售额中的比例。
计算机网络中,防火墙的功能不包括________________。
某项技术在社会上的热度依次经历了萌芽期、狂热期、幻想破灭期、复苏期、成熟期五个阶段。在“时间T,社会热度S”坐标系中,这种技术的变化趋势可图示为()。
在Excel2010中,设单元格A1、B1、C1、A2、B2、C2中的值分别为1、2、3、4、5、6,若在单元格D1中输入函数“=MAX(A1:A2,B1:C2)”,按回车键后,则D1单元格中的值为(
在Excel2007中,在单元格A1中输入函数“=LEN(”信息处理技术员”)”,按回车键后,则A1单元格中的值为__________。
ASP是(1)网页制作技术。A.动态B.静态假设连接的数据记录集当前指向的记录如下:写出以下ASP代码经过IIS服务器解释后的结果。<ahref="<%=rs("url")%>"target="_blank"
随机试题
A、地西泮B、吗啡C、硫喷妥钠D、苯巴比妥E、苯妥英钠作用维持时间最长的巴比妥类药物是
男性,41岁,右上腹疼痛1年。B超检查示:肝左外叶直径10cm占位,边界不清,门静脉左支内可见癌栓。首选治疗方案
男,30岁,体重60kg,热力烧伤后4小时人院。查体:休克,I°要烧伤面积10%,Ⅱ°烧伤面积20%,Ⅲ°烧伤面积30%,入院后8小时内补液总量最好是
有关消毒的描述,正确的是
甲公司得知乙公司正在与丙公司谈判。甲公司本来并不需要这个合同,但为排挤乙公司,就向丙公司提出了更好的条件。乙公司退出后,甲公司借故中止谈判,给丙公司造成了损失。甲公司的行为性质属于()。
生产率是指全要素生产率,全要素生产率的上升主要取决于()。
心理测验按测验目的可分为()。
根据以下资料。回答下列题。根据所给材料.下列说法中正确的有:Ⅰ.2005—2011年,重庆文化产业增加值增长量逐年递增Ⅱ.2011年重庆文化产业增加值比2004年翻了三番Ⅲ.2011年各行业增加值高于文化产业平均值的有5个
隐蔽工程管路设计,在只能采用明敷槽道方式时,应注意其吊装高度。有孔托盘式或梯架式槽道在屋内水平敷设时要求距离地面高度一般不低于(47)m。
数据字典的作用是()。
最新回复
(
0
)