数据结构+课程设计+稀疏矩阵的操作

2018-12-19 21:42

攀枝花学院

学生课程设计(论文)

题 目:

学生姓名: 学 号: 所在院(系): 专 业: 班 级: 指 导 教 师: 职称:

年 月 日

攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书

题 目 稀疏矩阵的操作 1、课程设计的目的 培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 基本功能要求: (1) 稀疏矩阵采用三元组表示,求两个具有相同行列数的稀疏矩阵A和B的相加矩阵C,并输出C。 (2)求出A的转置矩阵D,输出D。 测试数据: ?0?4A???0??8100000795??2??00? B???90???0??0000006107??0? 0??0?3、主要参考文献 [1]《数据结构》(C语言版),严蔚敏,清华大学出版社,2003. [2]《数据结构题集》,严蔚敏,清华大学出版社,2005. [3]《数据结构》(C语言版),刘大有,高等教育出版社,2004. [4]《Data Structure with C++》,William Ford.William Topp,清华大学出版社,2003. 4、课程设计工作进度计划 第1天 第2、3天 第4天 第5天 完成方案设计与程序框图 编写程序代码 程序调试分析和结果 课程设计报告和总结 日期 年 月 日 指导教师(签字) 教研室意见: 年 月 日 学生(签字): 接受任务时间: 年 月 日 注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表

题目名称 评分项目 工作 表现 20% 01 02 03 04 05 06 07 08 学习态度 科学实践、调研 课题工作量 综合运用知识的能力 应用文献的能力 设计(实验)能力,方案的设计能力 计算及计算机应用能力 对计算或实验结果的分析能力(综合分析能力、技术经济分析能力) 插图(或图纸)质量、篇幅、设计(论文)规范化程度 设计说明书(论文)质量 创新 分值 6 7 7 10 5 5 5 10 得分 评价内涵 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。 按期圆满完成规定的任务,工作量饱满。 能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。 能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。 能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。 具有较强的数据收集、分析、处理、综合的能力。 能力 水平 35% 成果 质量 45% 09 10 11 5 30 10 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。 对前人工作有改进或突破,或有独特见解。 成绩 指导教师评语 指导教师签名: 年 月 日

稀疏矩阵的操作

1.课程设计的目的

本课程设计是为了配合《数据结构》课程的开设,通过设计一完整的程序,使学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C程序并用TC上机调试的基本方法。

利用三元组实现稀疏矩阵的有关算法。

2.问题描述

2.1稀疏矩阵采用三元组表示,求两个具有相同行列数的稀疏矩阵A和B的相加矩阵C,并输出C。

2.2求出A的转置矩阵D,输出D。

3. 基本要求

稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则通常以阵列形式列出。

4.结构设计

4.1.以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。

4.2.稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则通常以阵列形式列出。

4.3.首先应输入矩阵的行数和列数,并判别给出的两个矩阵的行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20。

4.4.程序可以对三元组的输入顺序加以限制,例如,按行优先。注意研究教材的算法,以便提高计算效率。5.在用三元组表示稀疏矩阵时,相加或相减所得结果矩阵应该另生成,乘积矩阵也可用二维数组存放

5.算法思想

5.1.主函数设置循环和选择语句进行运算循环和选择,进行稀疏矩阵的加法,减法,乘法,转置和是否继续运算5个分支开关进行运算选择。

5.2.设置函数分别实现稀疏矩阵的输入,输出,加法,减法,乘法。

5.3.在数组结构体中设置存放每行第一个非零元在其数组存储结构单元的位置的存储单元,若该行无非零元,则存为0

6.模块划分

6.1typedef struct存放各行第一个非零元在存储数组中的位置,若该行无非零元,则其rpos[]值为零

6.2 createsmatrix(rlsmatrix *M) 矩阵输入函数,输入各行非零元及其在矩阵中的行列数 6.3 FasttransposeRLSMatrix(RLSMatrix M,RLSMatrix *Q) 矩阵快速转置

6.4 HeRLSMatrix(RLSMatrix *M,RLSMatrix *N,RLSMatrix *Q) 矩阵求和 6.5 ChaRLSMatrix(RLSMatrix *M,RLSMatrix *N,RLSMatrix *Q) 矩阵求差 6.6 JiRLSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix *Q) 矩阵求积

7.算法实现

7.1首先定义非零元个数的最大值和存放各行第一个非零元在存储数组中的位置

#include

#define MAXSIZE 100 /* 非零元个数的最大值 */ typedef struct triple {

int i,j; /* 行下标,列下标 */ int e; /* 非零元素值 */ }triple;

typedef struct tsmatrix {

triple data[MAXSIZE+1]; /* 非零元三元组表,data[0]未用 */ int mu,nu,tu; /* 矩阵的行数、列数和非零元个数 */ /* 各列第一个非零元的位置表rpos[0]未用 */ }rlsmatrix;

7.2创建稀疏矩阵矩阵的行数,列数,和非零元素的个数并按行序顺序输入第%d个非零元素所在的行(1~%d),列(1~%d),元素值。

createsmatrix(rlsmatrix *M) { /* 创建稀疏矩阵M */

int e,i,m,n;

M->data[0].i=0; /* 为以下比较顺序做准备 */

printf(\请输入矩阵的行数,列数,和非零元素的个数:\ scanf(\

for(i=1;i<=M->tu;i++) {

printf(\请按行序顺序输入第%d个非零元素所在的行(1~%d),列(1~%d),元素值:\ scanf(\

if(m<1||m>M->mu||n<1||n>M->nu) /*行或列超出范围 */ {printf(\行或列超出范围\

if(mdata[i-1].i||m==M->data[i-1].i&&n<=M->data[i-1].j) /*行或列的顺序有错*/ {printf(\行或列的顺序有错\ M->data[i].i=m; M->data[i].j=n; M->data[i].e=e; } }

7.3求矩阵的快速转置


数据结构+课程设计+稀疏矩阵的操作.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电大《公共政策概论》(新版)形成性考核册参考答案4(新)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: