稀疏矩阵的应用.doc
文本预览下载声明
数学与计算机学院
课程设计说明书
课 程 名 称: 数据结构与算法课程设计
课 程 代 码:
题 目:
年级/专业/班:
学 生 姓 名:
学 号:
开 始 时 间: 2013 年 12 月 16 日
完 成 时 间: 2013 年 12 月 31 日
课程设计成绩:
学习态度及平时成绩(30) 技术水平与实际能力(20) 创新(5) 说明书(计算书、图纸、分析报告)撰写质量(45) 总 分(100) 指导教师签名: 年 月 日
目 录
1 需求分析 1
1.1任务与分析 1
1.2测试数据 1
2 概要设计 1
2.1存储结构设计 1
2.2程序模块结构 2
2.3 各功能模块 3
3 详细设计 4
3.1结构体定义 4
3.2 插入操作 4
4 调试分析 16
5 用户使用说明 16
6 测试结果 16
6.1系统运行主界 16
6.2 各子功能测试运行结果 17
结 论 20
摘 要)
本课程设计主要实现在三元组存储结构与十字链表存储结构下输入稀疏矩阵,并对稀疏矩阵进行转置,相加,相乘等操作,最后输出运算后的结果。考虑到难易程度,先用三元组实现稀疏矩阵的输入,输出,及其转置,相加,相乘等操作的方法,再在十字链表下实现。程序通过调试运行,结果与预期一样,初步实现了设计目标。
关键词:程序设计;稀疏矩阵;三元组;十字链表
引 言
1 需求分析
其目的是让我们在学习完C++、数据结构等课程基础上,掌握多维数组的逻辑结构和存储结构、掌握稀疏矩阵的压缩存储及转置,相加,相乘等操作,并用不同的方法输出结果,进一步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
1.1任务与分析
本课程设计主要实现在三元组存储结构与十字链表存储结构下输入稀疏矩阵,并对稀疏矩阵进行转置,相加,相乘操作,最后输出运算后的结果。稀疏矩阵采用三元组和十字链表表示,并在两种不同的存储结构下,求两个稀疏矩阵A和B的和为矩阵C,并输出C; 求出A的转置为矩阵D,输出D; 求两个稀疏矩阵A和B的相乘为矩阵E,并输出E。
1.2测试数据
5 4 5
1 1 3 1 4 7
2 3 -1 3 1 2
5 4 -8
5 4 10
1 3 1 1 4 2 2 2 2
2 3 1 2 4 1 3 4 3
4 1 1 4 2 6
4 4 1 5 1 2
2 概要设计
2.1存储结构设计
三元组结构体定义:
struct element
{
int i,j;
ElemType item;
};
const int MaxTerm = 100;
struct Sparsematrix
{
element data[MaxTerm];
int mu, nu, tu; //行数、列数、非零元个数
};
十字链表结构体定义:
typedef struct MLnode
{
int i;//结点的行下标
int j; //结点的列下标
ElemType e; //非零元的值
struct MLnode *right, *down; //该非零元所在行表和列表的后继元素
}MLnode;
2.2程序模块结构
2.2.1 结构体定义
三元组结构体定义:
struct element
{
int i,j;
ElemType item;
};
const int MaxTerm = 100;
struct Sparsematrix
{
element data[MaxTerm];
int mu, nu, tu; //行数、列数、非零元个数
};
十字链表结构体定义:
typedef struct MLnode
{
int i;//结点的行下标
int j; //结点的列下标
ElemType e; //非零元的值
struct MLnode *right, *down; //该非零元所在行表和列表的后继元素
}MLnode;
2.3 各功能模块
本系统除了要完成分别在三元组存储结构以及在十字链表下实现
显示全部