三元组表示稀疏矩阵的转置(一般算法和快速算法)

三元组表示稀疏矩阵的转置(一般算法和快速算法)

ID:8807473

大小:139.00 KB

页数:16页

时间:2018-04-08

三元组表示稀疏矩阵的转置(一般算法和快速算法)_第1页
三元组表示稀疏矩阵的转置(一般算法和快速算法)_第2页
三元组表示稀疏矩阵的转置(一般算法和快速算法)_第3页
三元组表示稀疏矩阵的转置(一般算法和快速算法)_第4页
三元组表示稀疏矩阵的转置(一般算法和快速算法)_第5页
资源描述:

《三元组表示稀疏矩阵的转置(一般算法和快速算法)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、设计要求1.1问题描述稀疏矩阵是指那些多数元素为零的矩阵。利用稀疏特点进行存储和计算可以大大节省存储空间,提高计算效率。求一个稀疏矩阵A的转置矩阵B。1.2需求分析(1)以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现稀疏矩阵的转置运算。(2)稀疏矩阵的输入形式采用三元组表示,运算结果则以通常的阵列形式列出。(3)首先提示用户输入矩阵的行数、列数、非零元个数,再采用三元组表示方法输入矩阵,然后进行转置运算,该系统可以采用两种方法,一种为一般算法,另一种为快速转置算法。(4)程序需要给出菜单项,用户按照菜单提

2、示进行相应的操作。二、概要设计2.1存储结构设计采用“带行逻辑链接信息”的三元组顺序表表示矩阵的存储结构。三元组定义为:typedefstruct{inti;//非零元的行下标intj;//非零元的列下标ElemTypee;//非零元素值}Triple;矩阵定义为:Typedefstruct{Tripledata[MAXSIZE+1];//非零元三元组表intrpos[MAXRC+1];//各行第一个非零元的位置表intmu,nu,tu;//矩阵的行数、列数和非零元个数}RLSMatrix;例如有矩阵A,它与其三元组

3、表的对应关系如图162.2系统功能设计本系统通过菜单提示用户首先选择稀疏矩阵转置方法,然后提示用户采用三元组表示法输入数据创建一个稀疏矩阵,再进行矩阵的转置操作,并以通常的阵列形式输出结果。主要实现以下功能。(1)创建稀疏矩阵。采用带行逻辑连接信息的三元组表表示法,提示用户输入矩阵的行数、列数、非零元个数以及各非零元所在的行、列、值。(2)矩阵转置。<1>采用一般算法进行矩阵的转置操作,再以阵列形式输出转置矩阵B。<2>采用快速转置的方法完成此操作,并以阵列形式输出转置矩阵B。三、模块设计3.1模块设计程序包括两个模

4、块:主程序模块、矩阵运算模块。3.2系统子程序及其功能设计系统共设置了8个子程序,各子程序的函数名及功能说明如下。(1)CreateSMatrix(RLSMatrix&M)//创建稀疏矩阵(2)voidDestroySMatrix(RLSMatrix&M)//销毁稀疏矩阵(3)voidPrinRLSMatrix(RLSMatrixM)//遍历稀疏矩阵(4)voidprint(RLSMatrixA)//打印矩阵函数,输出以阵列形式表示的矩阵(5)TransposeSMatrix(RLSMatrixM,RLSMatrix

5、&T)//求稀疏矩阵的转置的一般算法(6)FastTransposeSMatrix(RLSMatrixM,RLSMatrix&T)//快速转置算法(7)voidshowtip()//工作区函数,显示程序菜单(8)voidmain()//主函数163.3程序主要调用关系图8main1234567四、详细设计4.1数据类型定义采用矩阵“带行逻辑连接信息”的三元组顺序表存储结构。4.2系统主要子程序详细设计(1)主函数:voidmain(){intresult;intj;RLSMatrixA,B;COORDCo={0,0}

6、;DWORDWrite;SetConsoleTitle("稀疏矩阵的转置");HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hOut,FOREGROUND_RED

7、FOREGROUND_BLUE

8、FOREGROUND_INTENSITY);FillConsoleOutputAttribute(hOut,FOREGROUND_RED

9、FOREGROUND_BLUE

10、FOREGROUND_INTENSITY,100000000,Co,

11、&Write);///windows的API函数,用来设置控制台标题及颜色。do{showtip();//调用菜单函数inti;scanf("%d",&i);switch(i){case1:printf("创建矩阵A:");if((result=CreateSMatrix(A))==0)exit(ERROR);16printf("矩阵A的三元组表为:");PrinRLSMatrix(A);printf("求A的转置矩阵B(一般算法):");TransposeSMatrix(A,B);printf("矩阵B的三

12、元组表为:");PrinRLSMatrix(B);printf("以通常的阵列形式输出转置前的矩阵A:");print(A);printf("");printf("以通常的阵列形式输出转置后的矩阵B:");print(B);DestroySMatrix(B);printf("");break;case2:printf

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。