一 、设计要求 1. 1 问 题 描 述 稀疏矩阵是指那些多数元素为零的矩阵
利用稀疏特点进行存储和计算可以大大节省存储空间,提高计算效率
求一个稀疏矩阵A 的转置矩阵B
1. 2 需 求 分 析 (1)以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现稀疏矩阵的转置运算
(2)稀疏矩阵的输入形式采用三元组表示,运算结果则以通常的阵列形式列出
(3)首先提示用户输入矩阵的行数、列数、非零元个数,再采用三元组表示方法输入矩阵,然后进行转置运算,该系统可以采用两种方法,一种为一般算法,另一种为快速转置算法
(4)程序需要给出菜单项,用户按照菜单提示进行相应的操作
二、概要设计 2. 1 存 储结构设计 采用“带行逻辑链接信息”的三元组顺序表表示矩阵的存储结构
三元组定义为: typedef struct { int i; //非零元的行下标 int j; //非零元的列下标 ElemType e; //非零元素值 }Triple; 矩阵定义为: Typedef struct { Triple data[MAXSIZE+1]; //非零元三元组表 int rpos[MAXRC+1]; //各行第一个非零元的位置表 int mu,nu,tu; //矩阵的行数、列数和非零元个数 }RLSMatrix; 例如有矩阵A,它与其三元组表的对应关系如图 2 2. 2 系 统 功 能 设 计 本系统通过菜单提示用户首先选择稀疏矩阵转置方法,然后提示用户采用三元组表示法输入数据创建一个稀疏矩阵,再进行矩阵的转置操作,并以通常的阵列形式输出结果
主要实现以下功能
(1) 创建稀疏矩阵
采用带行逻辑连接信息的三元组表表示法,提示用户输入矩阵的行数、列数、非零元个数以及各非零元所在的行、列、值
(2) 矩阵转置
采用一般算法进行矩阵的转置操作,再以阵列形式输出转置矩阵B