数据结构与算法特殊矩阵和稀疏矩阵.docVIP

  • 22
  • 0
  • 约3.95千字
  • 约 11页
  • 2018-11-08 发布于广东
  • 举报

数据结构与算法特殊矩阵和稀疏矩阵.doc

数据结构与算法特殊矩阵和稀疏矩阵.doc

常熟理工学院 《数据结构与算法》实验指导与报告书 2017-2018 学年第丄学期 专业: 实验名称 实验地点 指导教师 物联网工程 特殊矩阵和稀疏矩阵 N6-210 XX 计算机科学与工程学院 2017 实验五特殊矩阵和稀疏矩阵 实验目的】 1、 掌握数组的结构类型(静态的内存空间配置):通过数组的引用下标转换成该数据在 N存屮的地址; 2、 掌握对称矩阵的压缩存储表示; 3、 掌握稀疏矩阵的压缩存储-三元组表表示,以及稀疏矩阵的转置算法。 实验学时】 2学时 实验预习】 回答以下W题: 1、 什么是对称矩阵?写出对称矩阵压缩存储sa[k]与aij之间的对应关系。 若n阶矩阵A屮的元素满足下述性质:则称为n阶对称矩阵。 sa[k]与矩阵元素ay之间存在着一一对应的关系: 若 i〉=j,k=i*(i+l)/2+j; 若 ij,k=j*(j+l)/2+io 0=i, j=n-l 0=k=n*(n+1 )/2-1 2、 什么是稀疏矩阵?稀疏矩阵的三元组表表示。 假设在mXn的矩阵屮,有t个元素不为零,且tmXn,则称此矩阵为稀疏矩 阵。 稀疏矩阵的三元组成表示:矩阵的行数、列数和非零元个数 实验内容和要求】 1、编写程序exp5_l.c,将对称矩阵进行压缩存储。 对称矩阵数组元素转换成为以行为主的一维数组sa[k],请描述k与ij的关 系。(注意C程序中,i, j, k均从0开始) 调试程序与运行。对称矩阵存储下三角部分即i〉=j。 对称矩阵为3,9,1,47 1,2,5,2,4 4,5,24,7 7.8.4.7.9 1 wo dim ens donj al upper triangular array: 3 9 1 4 7 9 5 2 5 8 1 2 5 2 4 4 5 2 1 7 7 8 4 7 9 ivO Maj or one dimensional arrav: 3 9 5 1 25452178479 参考程序如下: #includestdio.h #define N 5 int main() { int upper[N][N]={{3,9,l,4,7}, {9,5,2,5,8}, {1,2,5,2,4}, {4,5,2,1,7}, {7,84,7,9} }; /*对称矩阵*/ introvvMajor[15];/*存储转换数据后以行为主的数组*/ int Index; /*数组的索引值*/ int i,j; printf(”Two dimensional upper triangular array:\n); for (i=0; iN; i++) /*输出对称矩阵*/ { for(j=0; jN; j++) printf(%3d”,upper[i]|jj); printf(n\nn); } for(i=0; iN; i++) /*进行压缩存储 for(j=0; jN; j++) if(i=j) /*下三角元素进行存储*/ { Index=i*(i+l)/2+j; /*ij 与 index 的转换*/ rowMajor[Index]=upper[i] [j ]; } printf(\nRow Major one dimensional array:\nH); for(i=0; i15;i++) /*输出转换后的一维数组*/ printf(,,o/o3dn, rowMajorfil); printf(” \n); return 1; } 2、完成程序exp5_2.c,实现稀疏矩阵的三元组表存储及稀疏矩阵的转置。调试并给出 结果: 补充完整程序,运行稀疏矩阵的一般转置算法; 完成稀疏矩阵的快速转置算法,并修改主函数的转置调用算法,验证快速转置算 法的正确性。 0 0 0 0 0 0 0 0 14 0 0 0 o o o o o o表 0 0 0 0 0 7^ -元 :9 o 0240 o 一二 fe12o o olsomrM 0 3 00 5S 帝- 1专 J e 3 -3 6 15 ! 1 12 ! 5 18 钦软拼音半:9 exp5_2.c部分代码如卜: #includestdio.h #define MAXSIZE 20 /*非零元素个数最大值*/ typedef ini ElemType; typedef struct { int i,j; ElemType e; [Triple; typedef struct { Triple data[MAXSIZE+l]; /*三元组表,data[01 不用*/ intmu,nu,tu; /*矩阵的行数、列数、啡零元个数*/ JTSMatrix; void TransposeSMatrix(TSMatrix *T,TSMatrix *M); /*—般转置算法*/ voi

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档