1、 课程设计报告课程设计报告 课程设计题目:课程设计题目:稀疏矩阵的转置稀疏矩阵的转置 2012年年 06 月月 21 日日 目录目录 一、课程设计题目 二、题目与流程图或模块图 三、程序清单和运行结果 四、小结(收获和体会) 一、一、课程设计目的:课程设计目的: 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理 论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生 适应实际,实践编程的能力。 二、题目与流程图或模块图二、题目与流程图或模块图 1 1、题目、题目: 稀疏矩阵的转置 要求:1)以三元组的方式存储稀疏矩阵 2)普通转置方法实现 3)快速转置方法实现
2、 2 2、流程图、流程图: 三、程序清单和运行结果三、程序清单和运行结果: 1 1、程序清单:、程序清单: # define maxsize 1000 typedef int elemtype; typedef struct int row,col; elemtype e; triple; typedef struct triple datamaxsize+1; int m,n,len; 用数组创建 三元组 输入矩阵的 行、 列、 长度、 值 快 速 转置 普 通 转置 输出转置 后的矩 阵 定义全局变量数组 的行数 row 和列数 col tsmatrix; int init(triple
3、*s) s-row=s-col=0; int create(tsmatrix *b) int i; printf(“please input m,n,lenn“); scanf(“%d%d%d“, for(i=1;ilen;i+) printf(“please input e,row,coln“); scanf(“%d%d%d“, void transposetsmatrix(tsmatrix a,tsmatrix *b) int i,j,k; b-m=a.n; b-n=a.m; b-len=a.len; if(b-lenlenmaxsize) printf(“the matrix is er
4、ror“); else j=1; for(k=1;kdataj.col=a.datai.row; b-dataj.e=a.datai.e; j+; void fasttransposetsmatrix(tsmatrix a,tsmatrix *b) int col,t,p,q; int nummaxsize,positionmaxsize; b-len=a.len;b-n=a.m;b-m=a.n; if(b-lenlenmaxsize) printf(“the matrix is error“); else for(col=1;coldataq.col=a.datap.row; b-dataq
5、.e=a.datap.e; positioncol+; void display(tsmatrix *b) int i,j,k; for(i=1;im;i+) for(j=1;jn;j+) for(k=1;klen;k+) if(b-datak.row=ibreak; if(kb-len) printf(“%5d“,0); if(j=b-n) printf(“n“); main() triple s; tsmatrix a,b,c; init( create( display( printf(“n“); printf(“pu tong zhuan zhi jie guon“); transpo
6、setsmatrix(a, display( printf(“n“); printf(“kuai su zhuan zhi jie guon“); fasttransposetsmatrix(a, display( 2 2、运行结果、运行结果: 输入矩阵的行、列、长度 输入非零元素的行、列、值 输出矩阵以及转置后的矩阵 四、小结四、小结( (收获和体会收获和体会) ): 通过一周的课程设计使我对数据结构有了更深的理解, 对以前学习中不明白 的,不理解的都有了进一步的理解。在实际操作中遇到了很多困难,比如,在做 矩阵的转置时,一开始不了解矩阵转置到底是什么,普通转置的原理,快速转置 的原理。 但通过查书, 请教同学和老师, 使我的动手能力和沟通能力都有了提高。 在整个课程设计中总是在编写程序中发生错误,有时会很没耐性,但都被我 逐个克服了,