欢迎来到天天文库
浏览记录
ID:41712415
大小:68.12 KB
页数:10页
时间:2019-08-30
《数据结构试验4稀疏矩阵》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ZUIXIVISHIFAMXUEYUAM计科系实验报告实验名称稀疏矩阵的运算专业班级10级计科(2)班学生姓名李永学号10410902052指导教师冯韵2012至2013学年第1学期第3至4周目录1概述・3・2系统分析-3-2.2设计分析-3-3需求分析-4-说明程序设计的任务,强调的是程序要做什么,明确规定:-4-1、输入的形式和输入值的范围;-4-2、输出的形式;-4-3、程序所能达到的功能;-4-4、测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。-4-4.1稀疏矩阵的储存-4-4.2稀疏矩阵加
2、法-4-5运行与测试-7-6总结与心得-7-7参考文献-8-8程序代码-8-1概述有输入界面(图形或文字界面都可),能区分加法、减法、乘法和转置;能处理任意输入的典型数据和进行出错数据处理(例如乘法,当第一个矩阵的列数不等于第二个矩阵的行数时);必须采用三元组作存储结构,不能采用数组等形式;输出要求用矩阵的形式输出页,当第一个矩阵的行数不等于第二个矩阵的行数时,注意如第三个乘法的形式输出。2系统分析2.1设计要求数组是一种常用的数据类型,儿乎所有的程序设计语言都把数组类型设为固有类型,都是采用顺序储存方法来表示数组。若
3、将表示稀疏矩阵的非零元素的三元组按行优先的顺序排列,就会得到一个三元组的线性表。2.2设计分析根据设计要求,首先需要解决如何将一个稀疏矩阵对应储存到一个一维数组中,然后在进行矩阵加法运算时依次扫描A和B的行列值,并以行优先。实现概要设计屮定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。3需求分析说明程序设计的任务,强调的是程序要做什么,明确规定:1、输入的形式和输入值的范围;2、输出的形式;3、程序所能达到的功能;4、测试数据:包括正确的输入及其输出结果和含
4、有错误的输入及其输出结果。4.1稀疏矩阵的储存按要求的方法实现稀疏矩阵的储存室比较简单的,类似建立顺序储存稀疏矩阵的三元组表。具体算法如下:voidCreatMatrix(intA[m][n],intBf5O]){inti,j,k=O;for(i=0;i5、],intBfmax],intCfmax])(inti=O,j=O,k=O;while(AliJ!=-l&&B6、j]!=-1){if(A[i]=B7、j])〃行相等{if(A[i+l]==B[j+l])〃列相等{C[k]=A[i];C[k+l]=A[i+lJ;C[k+2]=A[i+2]+B[j+2];k二k+3;i=i+3;j=j+3;I_elseif(A[i+l]vB[j+l])//A的列小于B的列,将A的三个元素直接存入C中{C[k]=A[i];C[k+l]=A[i+l];C[k+2]=A[i+2J;k=k+3;i=8、i+3;}else〃B的列小于A的列,将B的三个元素直接存入C中{C[k]=BU];C[k+l]=B[j+l];C[k+2]=B[j+2];k二k+3;戸+3;elseif(ALi+l]9、j+U)〃A的行小于B的行,将B的三个元素直接存入C中{C[k]=A[i];C[k+l]=A[i+l];C[k+2]=A[i+2];k=k+3;i=i+3;}else//B的行小于A的行,将B的三个元素直接存入C中C[k+ll=B[j+ll;C[k+2]=B[j+2];k二k+3;j=j+3;}}〃循环结束if(A[i]==-l)10、_while(B[j]!=-l)〃A结束B还有元素,将B的所有元素直接存入C中{C[k]二B[j];Cfk+11=BO+1];C[k+2]=B[j+2];k二k+3;j=j+3;)elsewhile(A[i]!=-l){C[k]=A[i];C[k+l]=A[i+l];C[k+2]=A[i+2J;k=k+3;i=i+3;}C[k]=-1;5运行与测试.aT«6总结与心得在本次实验中遇到了很多问题,很多东西只是一知半解。对稀疏矩阵的概念也很模糊了,于是查了一些资料,和同学一起解决问题,慢慢的把一些错误找出来并改正了。我认为11、学习最重要的是发现问题,解决问题。自己解决不了的和同学一起解决,这样才能学到更多东西。本次试验让我稀疏矩阵的认识进一步加深了。7参考文献[1]《数据结构课程设计》苏仕华等编著机械工业出版社[2]《数据结构》(C语言版)严蔚敏吴伟民编著清华大学出版社[3]《C程序设计》(第三版)谭浩强著清华大学出版社8程序代码#include
5、],intBfmax],intCfmax])(inti=O,j=O,k=O;while(AliJ!=-l&&B
6、j]!=-1){if(A[i]=B
7、j])〃行相等{if(A[i+l]==B[j+l])〃列相等{C[k]=A[i];C[k+l]=A[i+lJ;C[k+2]=A[i+2]+B[j+2];k二k+3;i=i+3;j=j+3;I_elseif(A[i+l]vB[j+l])//A的列小于B的列,将A的三个元素直接存入C中{C[k]=A[i];C[k+l]=A[i+l];C[k+2]=A[i+2J;k=k+3;i=
8、i+3;}else〃B的列小于A的列,将B的三个元素直接存入C中{C[k]=BU];C[k+l]=B[j+l];C[k+2]=B[j+2];k二k+3;戸+3;elseif(ALi+l]
9、j+U)〃A的行小于B的行,将B的三个元素直接存入C中{C[k]=A[i];C[k+l]=A[i+l];C[k+2]=A[i+2];k=k+3;i=i+3;}else//B的行小于A的行,将B的三个元素直接存入C中C[k+ll=B[j+ll;C[k+2]=B[j+2];k二k+3;j=j+3;}}〃循环结束if(A[i]==-l)
10、_while(B[j]!=-l)〃A结束B还有元素,将B的所有元素直接存入C中{C[k]二B[j];Cfk+11=BO+1];C[k+2]=B[j+2];k二k+3;j=j+3;)elsewhile(A[i]!=-l){C[k]=A[i];C[k+l]=A[i+l];C[k+2]=A[i+2J;k=k+3;i=i+3;}C[k]=-1;5运行与测试.aT«6总结与心得在本次实验中遇到了很多问题,很多东西只是一知半解。对稀疏矩阵的概念也很模糊了,于是查了一些资料,和同学一起解决问题,慢慢的把一些错误找出来并改正了。我认为
11、学习最重要的是发现问题,解决问题。自己解决不了的和同学一起解决,这样才能学到更多东西。本次试验让我稀疏矩阵的认识进一步加深了。7参考文献[1]《数据结构课程设计》苏仕华等编著机械工业出版社[2]《数据结构》(C语言版)严蔚敏吴伟民编著清华大学出版社[3]《C程序设计》(第三版)谭浩强著清华大学出版社8程序代码#include
此文档下载收益归作者所有