数据结构·练习·稀疏矩阵的快速转置
一、问题描述
一个mxn的矩阵A,它的转置矩阵B是一个nxm矩阵,且A[i][j]=B[j][i],0<=i<=m-1,0<=j<=n-1,即A的行是B的列,A的列是B的行。
用三元组表对稀疏矩阵进行压缩存储,再进行时间复杂度O(n)的快速转置,最后输出稀疏矩阵。
其中m=4,n=5
二、算法概述
1、问题分析
1)压缩
2)转置
3)解压
2、算法描述
- 用三元组表压缩存储稀疏矩阵;
- 用向量num[]表示矩阵A每列的非零元素个数,用向量start[]表示矩阵A每列的第一个非零元素在矩阵B中的位置;
- 遍历三元组表Atriple,根据向量num[]和向量start[]将元素逐个放入三元组表Btriple的相应位置;
- 解压三元组表Btriple得到稀疏矩阵B。
三、输入说明
一行输入m和n,换行输入一个mxn稀疏矩阵A
四、输出说明
输出一个nxm稀疏矩阵B
输入样例:
4 5
0 5 0 0 8
1 0 3 0 0
0 -2 0 0 0
6 0 0 0 0
输出样例:
0 1 0 6
5 0 -2 0
0 3 0 0
0 0 0 0
8 0 0 0文章来源:https://www.toymoban.com/news/detail-442507.html
五、程序实现文章来源地址https://www.toymoban.com/news/detail-442507.html
#include<stdio.h>
/*定义三元组表*/
typedef struct
{
int i;//行标
int j;//列标
int elem;//内容
}triple;
typedef struct
{
triple data[M];
int m;//被存储矩阵的行
int n;//被存储矩阵的列
int len;//三元组表长度
} triplematrix;
/*主函数*/
int main()
{
int i=0,j=0,i1=0,j1=0,k=0,l=0,sum&#
到了这里,关于数据结构·练习·三元组表法实现稀疏矩阵的转置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!