稀疏矩阵的存储和运算
一 目的
根据所学知识,编写指定题目的C语言程序,并规范地完成课程设计报告。通过课程设计,加深对《程序设计语言》和《软件技术基础》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
二 需求分析
为了节约存储空间,稀疏矩阵通常采用压缩存储的方式。将给定的稀疏矩阵进行压缩存储,并实现矩阵的转置等运算。
将稀疏矩阵采用三元组顺序表进行存储,实现下列操作:
(1)任意给定一个稀疏矩阵M,压缩存储M;
(2)求M的转置矩阵N;
(3)在三元组存储矩阵中查找值为x的结点是否存在,如果存在,输出它的位置,否则输出“不存在”的提示信息;
(4)打印矩阵的形状;
(5)采用模块化设计,有菜单功能。
三 概要设计
1、本程序包含两个模块
(1)主函数模块
main()
{
定义及初始化;
调用创建、转置、查找函数 ,实现不同的逻辑功能;
调用打印函数,输出原矩阵以及转置矩阵;
}
(2)自定义函数模块:
创建函数Create();
转置函数Transmat();
查找函数searchhval(x);
打印函数Print_Pmatrix(X)
2、子程序类型定义:
Create();
操作结果:完成稀疏矩阵的输入
Transmat();
操作结果:完成稀疏矩阵的转置
searchhval(x);
操作结果:完成结点x的查找
Print_Pmatrix(X);
操作结果:完成稀疏矩阵
四 详细设计
1、主函数之前
#include