数据结构C语言版-稀疏矩阵三元组的基本操作

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据结构课程设计-1-数据结构课程设计实验报告内容名称:稀疏矩阵的基本操作成员1:09213020-陈东成员2:09213040-蔡丹班级:09数31教师:李晓翠江苏师范大学数学科学学院数据结构课程设计-2-目录1.序言…………………….........................................................................................................31.1数据结构背景…………………………………………………………………………….31.2课程设计目的…………………………………………………………………………….31.3课程名称…………………………………………………………………………………31.4设计要求………………………………………………………………………………….31.5设计说明………………………………………………………………………………….32.课程任务设计说明书………………………………………………………………..53.需求分析…………………………………………………………………………………...63.1题目名称…………………………………………………………………………………...63.2题目内容…………………………………………………………………………………...63.3题目分析…………………………………………………………………………………...64.概要设计………………………………………………………………………………….74.1稀疏矩阵存储结构………………………………………………………………………..74.2.稀疏矩阵的基本操作……………………………………………………………………..74.3各模块设计要求………………………………………………………………………….84.4总体功能流程图…………………………………………………………………………..94.4.1存储结构流程图…………………………………………………………………….94.4.2稀疏矩阵基本操作流程图………………………………………………………….105.详细设计…………………………………………………………………………………115.1设计原理………………………………………………………………………………….115.2基本函数实现流程图……………………………………………………………………136.主要函数代码………………………………………………………………………….217.调试与操作说明………………………………………………………………………277.1操作说明…………………………………………………………………………………277.2调试结果………………………………………………………………………………...287.3结果分析…………………………………………………………………………………318.设计体会……………………………………………………………………………………329.参考文献……………………………………………………………………………………3210.分工说明………………………………………………………………………………….33数据结构课程设计-3-1.序言1.1数据结构背景数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力,而且该课程的研究方法对我们学生在校和离校后的学习和工作,也有着重要的意义。数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用。学习数据结构的最终目的是为了获得求解问题的能力。对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。基于此原因,我们开设了数据结构课程设计。针对数据结构课程的特点,着眼于培养我们的实践能力。实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。相信通过数据结构课程实践,无论是理论知识,还是实践动手能力,同学们都会有不同程度上的提高。1.2课程设计的目的巩固和深刻理解“数据结构(C语言版)”课程所讲解的C语言作为数据结构的算法的描述,掌握对数据的存储结构和算法进行描述时,尽量考虑C语言的特色。培养学生独立工作和创新思维的能力,取得设计与调试的实践经验。提高和加强计算机应用及软件开发能力。通过课程设计题目的练习,强化学生对所学知识的掌握及对问题分析和任务定义的理解,对每到题目作出了相应的逻辑分析和数据结构的选择,通过对任务的分析,为操作对象定义相应的数据结构,以过程化程序设计的思想方法为原则划分各个模块,定数据结构课程设计-4-义数据的抽象数据类型。分模块对题目进行设计,强化学生对C语言的掌握和对数据结构的选择及掌握。通过程序的编译掌握对程序的调试方法及思想,并且让学生学会使用一些编程技巧。促使学生养成良好的编程习惯,以及让学生对书本上的知识进行了实践。算法与数据结构这门课是计算机科学中一门综合性的专业基础课1.2课程名称:数据结构1.3设计要求学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构,存储结构及其相应的算法,算法要求用C语言完成。学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,撰写课程设计报告。要求源代码有足够的注释,能达到题目要求,并使人能看得懂你的代码。1.5设计说明此课程设计着重在于让我们理解如何利用C语言来实现稀疏矩阵的一些具体操作,里面代码完全采用C语言描述,包括了稀疏矩阵的建立,稀疏矩阵的输出,两个稀疏矩阵的相加,以及如何求出相应矩阵的转置矩阵。由于在我们课本中除了学习了稀疏矩阵的建立,相加,转置外,我们还接触了稀疏矩阵的销毁,稀疏矩阵的复制,稀疏矩阵的相减,稀疏矩阵的相乘,为了将有关稀疏矩阵的几个基本操作全部实现一遍,我们在完成原有题目的要求下,拓展了下题目内容,将稀疏矩阵的销毁,稀疏矩阵的复制,稀疏矩阵的相减,稀疏矩阵的相乘补充进去,这样我们更觉得此次课程设计的完整性。而且,为了使读者更容易理解代码含义,程序的源代码基本与书本同步,思想方法也基本与书本介绍的吻合!数据结构课程设计-5-2.课程设计任务书姓名学号09213020-陈东09213040-蔡丹班级09信计课程名称数据结构程序设计课程性质专业必修设计时间2012年5月17日——2012年5月24日设计名称稀疏矩阵的操作设计要求稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加,销毁,复制,相减,相乘,以及矩阵的一般转置和快速转置功能。设计思路与设计过程首先将课本上的所有关于稀疏矩阵方面的概念看一遍,知道一些关于稀疏矩阵的具体操作的C语言代码。由于书上部分代码已给出,只需理解个代码所执行的各自功能,然后将所有代码组合起来,便可以达到题目所需的要求。具体可分为一下几个步骤:1.创建稀疏矩阵:intCreateSMatrix(TSMatrix*M)2.输出稀疏矩阵:voidPrintSMatrix(TSMatrixM)3.两个矩阵相加:intAddSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)4.矩阵一般转置:intTransposeSMatrix(TSMatrixM,TSMatrix*T)5.矩阵快速转置:intFastTransposeSMatrix(TSMatrixM,TSMatrix*T)6.稀疏矩阵的销毁:voidDestroySMatrix(TSMatrix*M)7.稀疏矩阵的复制:intCopySMatrix(TSMatrixM,TSMatrix*T)8.两个稀疏矩阵的相减:intSubtSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)9.两个稀疏矩阵的相乘:intMultSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q计划与进度打算三天把课本的关于稀疏矩阵的知识点搞清楚,明白各代码所执行的具体功能,按照题目要求,整合出相应的C代码,剩余三天整理并写好相应的文档。时间很充分,总体进度还好。任课教师意见数据结构课程设计-6-3.需求分析3.1题目名称:稀疏矩阵的操作3.2题目内容:1.稀疏矩阵采用三元组表示;2.求两个具有相同行列数的稀疏矩阵A和B的相加矩阵C,并输出C;3.求出A的转置矩阵D,输出D;题目拓展:4.稀疏矩阵的销毁5.稀疏矩阵的快速转置6.求两个具有相同行列数的稀疏矩阵A和B的相减矩阵C,并输出C;7.求两个具有相同行列数的稀疏矩阵A和B的相乘矩阵C,并输出C;3.3题目分析:通常,用高级语言编制程序时,都是用二维数组来存储矩阵元。有的程序设计语言中还提供了各种矩阵运算,用户使用时都很方便。然而,在数值分析中经常出现一些阶数很高的矩阵,同时在矩阵中有许多值相同的元素或者零元素。有的为了节省存储空间,可以对这类矩阵进行压缩存储。所谓压缩存储是指:为多个值相同的元只分配一个存储空间;对零元不分配空间。我们可以运用压缩存储的方式来实现稀疏矩阵的几个基本操作。数据结构课程设计-7-4.概要设计4.1稀疏矩阵存储结构#defineMAXSIZE12500//假设非零元个数的最大值为12500typedefstruct{inti,j;//该非零元的行下标和列下标ElemeTypee;}Triple;Typedefstruct{Tripledata[MAXSIZE+1];//非零元三元组表,data[0]未用intmu,nu,tu;//矩阵的行数,列数和非零元个数}TSMatrix;4.2.稀疏矩阵的基本操作CreateSMatrix(&M);操作结果:创建稀疏矩阵M。DestroySMatrix(&M);初始条件:稀疏矩阵M存在;操作结果:销毁稀疏矩阵M。PrintSMatrix(M)初始条件:稀疏矩阵M存在。操作结果:输出稀疏矩阵M。CopySMatrix(TSMatrixM,TSMatrix*T)初始条件:稀疏矩阵M存在操作结果:由稀疏矩阵M复制得到T。AddSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)初始条件:稀疏矩阵M与N的行数和列数对应相等。数据结构课程设计-8-操作结果:求稀疏矩阵的和Q=M+N.SubtSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)初始条件:稀疏矩阵M与N的行数和列数对应相等。操作结果:求稀疏矩阵的和Q=M-N.MultSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)初始条件:稀疏矩阵M与N的行数和列数对应相等。操作结果:求稀疏矩阵的和Q=M*N.TransposeSMatrix(TSMatrixM,TSMatrix*T)初始条件:稀疏矩阵M存在操作结果:由稀疏矩阵M的转置矩阵T4.3.各模块设计要求1.初始函数建立稀疏矩阵及初始化稀疏矩阵本模块要求设计函数在三元组顺序表中建立稀疏矩阵并初始化。首先要定义三元组表结构体类型,在输入出现错误时,能够对错误进行判别处理,初始化稀疏矩阵都为空值,特别需要注意在三元组表存储稀疏矩阵的时候,要对变量进行动态的地址分配2.转置函数进行稀疏矩阵的转置本模块要求设计函数进行稀疏矩阵的转置并输出转置后的结果,由于对稀疏矩阵的转置只对一个矩阵进行操作,所以实现起来难度并不是很大,函数也比较容易编写。

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功