数据结构课程设计报告

发布 2022-10-05 18:03:28 阅读 3774

巢湖学院信息工程学院。

课程设计报告。

课程名称数据结构。

课题名称。专业。

班级。学号。

姓名aaa****。

指导教师 20 年月日。

目录。1、数据结构课程设计任务书 1

1.1、题目 1

1.2、要求 1

2、总体设计 1

2.1、功能模块设计 1

2.2、所有功能模块的流程图 1

3、详细设计 1

3.1、程序中所采用的数据结构及存储结构的说明 1

3.2、算法的设计思想 2

3.3、稀疏矩阵各种运算的性质变换 2

4、调试与测试: 2

4.1、调试方法与步骤: 2

4.2、测试结果的分析与讨论: 3

4.3、测试过程中遇到的主要问题及采取的解决措施: 3

5、时间复杂度的分析: 4

6、源程序清单和执行结果 4

7、c程序设计总结 8

8、致谢 8

9、参考文献 8

示例】用三元组实现稀疏矩阵的转置、相加、相乘。

示例】1)用creat函数创建三元组;

2)用print函数打印计算结果;

3)用add函数实现稀疏矩阵的相加运算;

4)用mult 函数实现稀疏矩阵的相乘运算;

5)用transm函数实现稀疏矩阵的转置运算;

6)用menu函数创建一个菜单。

根据课程设计题目的功能要求,各个功能模块的组成框图如下:

示例】示例1】略。

模块功能说明:如函数功能、入口及出口参数说明,函数调用关系描述等;

示例1】以顺序存储结构来表示三元组表,则可得到稀疏矩阵的一种压缩存储方式——三元组顺序表。

稀疏矩阵的三元组顺序存储表示。

#define maxsize 100 /*假设非零元个数的最大值为20*/

typedef struct

int i,j该非零元的行下标和列下标*/

int v;

triple;

typedef struct

triple data[maxsize+1非零元三元组表,data[0]未用*/

int mu,nu,tu矩阵的行数,列数和非零元个数*/

tsmastrix;

在此,data域中表示非零元得三元组是以行序为主序顺序排列的,这样有利于进行某些矩阵运算。

a) 相加运算。

对于两个稀疏矩阵相加,即行与行,列与列相加。

b)相乘运算。

若设q=m*n 其中m是m1*n1矩阵,n是m2*n2矩阵,只有当n1=m2时才可以相乘。

乘积矩阵q中元素。

q(i,j)=∑m(i,k)*n(k,j) 1≤i≤m1,1≤j≤n2

在算法中,不论m(i,k)和 n(k,j)的值是否为零,都要进行一次乘法运算,而实际上,这两者有一个值为零时,其乘积也为零。因此,在对稀疏矩阵进行运算时,应免去这种无效操作,只需在和中找到相应的各对元素(即中的j值和 中的i值相等的各对元素)相乘即可。

c) 转置运算

对于一个m*n的矩阵m,它的转置矩阵t是一个n*m的矩阵,且t(i,j)=m(j,i),1≤i≤n,1≤j≤m。完成一个稀疏矩阵的转置分为三步:

1)将矩阵的行列值相互交换;

2)将每个三元组中的i和j相互调换;

3)重排三元组之间的次序便可实现矩阵的转置;

a)加法运算。

两个稀疏矩阵的加和矩阵仍然是稀疏矩阵。

b)乘法运算。

两个稀疏矩阵的乘积矩阵不是稀疏矩阵。

c)转置运算。

一个稀疏矩阵的转置矩阵仍然是稀疏矩阵。

示例1】简述测试步骤。

第一步:测试矩阵加法:

过程(略)第二步:测试矩阵乘法:

过程(略)第三步:测试矩阵转置:

过程(略)测试要写出测试用例及每个用例结果的的截图)

略)a)加法运算。

由于两矩阵行列相等,故时间复杂度为o(行*列)

b)乘法运算。

设m是m1*n1矩阵,n是m2*n2矩阵,则时间复杂度是o(m1*n1*n2)

c)转置运算。

时间复杂度和原矩阵的列数及非零元的个数的乘积成正比,即o(mu*nu)

清单中应有足够的注释)

示例1】#include<>

#include<>

#include<>

#include<>

#define maxsize 100 /*假设非零元个数的最大值为20*/

typedef struct

int i,j该非零元的行下标和列下标*/

int v;

triple;

typedef struct

triple data[maxsize+1非零元三元组表,data[0]未用*/

int mu,nu,tu矩阵的行数,列数和非零元个数*/

juzheng;

void creat(juzheng &t)/*创建三元组*/

int k,i,j;

printf(" 请输入矩阵");

dowhile((<0||>20)||0||>20)||0.05)||maxsize));

for(k=1;k<=

do while((<0||>0||>

return;}

void print(juzheng a) /打印计算结果*/

int q,n,k,a=0;

printf("矩阵为:");

for(n=1;n<=

if(q>"\t%-3d",a);

printf("");

void add(juzheng a,juzheng b)/*加法运算*/

int n,k;

if(else

for(k=1;k<=

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...