分院上机实验报告4(稀疏矩阵“列序”递增转置算法)第十四周.doc

分院上机实验报告4(稀疏矩阵“列序”递增转置算法)第十四周.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分院上机实验报告4(稀疏矩阵“列序”递增转置算法)第十四周

学号: 090304122 沈阳建筑大学城市建设学院 数据结构(上机)实验报告 2010 ~ 2011 学年 一 学期 专 业:计算机科学与技术 班 级: 09级1班 姓 名: 杨光 项目名称:实验四 数组 学时:2 日期: 2010 年 11 月 19 日 第 12 教学周 硬件及软件 名 称 版本、型号 实验目的3、其它类似的题目(需要经过教师允许)。 实验方案、步骤、过程记录(含源程序、结果截图等): 源程序: #include malloc.h #include stdio.h #define MAXSIZE 1000 /*非零元素的个数最多为1000*/ #define ElementType int /*稀疏矩阵三元组表的类型定义*/ typedef struct { int row,col; /*该非零元素的行下标和列下标*/ ElementType e; /*该非零元素的值*/ }Triple; void main() { int i; int a[8]={1,1,3,3,4,5,6,6}; int b[8]={2,3,1,6,3,2,1,4}; int c[8]={12,9,-3,14,24,18,15,-7}; TSMatrix A; TSMatrix *B; A.n=8; A.m=1; A.len=8; B=(TSMatrix *)malloc(sizeof(TSMatrix)); for(i=0;i8;i++) { A.data[i+1].row=a[i]; A.data[i+1].col=b[i]; A.data[i+1].e=c[i]; } TransposeTSMatrix(A,B); for(i=1;i=8;i++) { printf(%3d,B-data[i].row); } printf(\n); for(i=1;i=8;i++) { printf(%3d,B-data[i].col); } printf(\n); for(i=1;i=8;i++) { printf(%3d,B-data[i].e); } printf(\n); getchar(); } typedef struct { Triple data[MAXSIZE+1]; /* 非零元素的三元组表。data[0]未用*/ int m,n,len; /*矩阵的行数、列数和非零元素的个数*/ }TSMatrix; /*矩阵转置的经典算法*/ /*列序递增转置法*/ void TransposeTSMatrix(TSMatrix A,TSMatrix *B) { /*把矩阵A转置到B所指向的矩阵中去。矩阵用三元组表表示*/ int i,j,k; B-m=A.n; B-n=A.m; B-len=A.len; if(B-len0) { j=1; /*j为辅助计数器,记录转置后的三元组在三元组表B中的下标值*/ for(k=1; k=A.n; k++) /*扫描三元组表A 共k次,每次寻找列值为k的三元组进行转置*/ for(i=1; i=A.len; i++) if(A.data[i].col==k) { B-data[j].row=A.data[i].col;/*从头至尾扫描三元组表A,寻找col值为k的三元组进行转置*/ B-data[j].col=A.data[i].row; B-data[j].e=A.data[i].e; j++; /*计数器j自加,指向下一个存放转置后三元组的下标*/ }/*内循环中if的结束*/ }/* if(B-len0)的结束*/ }/* end of TransposeTSMatrix */ /*按位快速转置法*/ void FastTransposeTSMatrix(TSMatrix A,TSMatrix *B) { /*基于矩阵的三元组表示,采用按位快速转置法,将矩阵A转置为矩阵B*/ int col,t,p,q; int num[MAXSIZE], position[MAXSIZE]; B-len=A.len; B-n=A.m; B-m=A.n; if(B-len) { for(col=1;col=A.n;col++) num[col]=0; for(t=1;t=A.len;t++)

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档