#include <stdio.h>
#include <stdlib.h>
#define N 6
#define MAX 20
typedef int ElemType;
typedef struct{
int i,j;
ElemType e;
}Triple;
typedef struct{
Triple data[MAX];
int mu,nu,tu;
}TSMatrix;
void reverse(ElemType a[][N],TSMatrix *M);
void fastTransposeSMatrix(TSMatrix *M,TSMatrix *T);
//将稀疏矩阵转换为三元组顺序表存储
void reverse(ElemType a[][N],TSMatrix *M){
int x=0,y=0,s=0;
M->mu=N;
M->nu=N;
M->tu=0;
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
if(a[x][y]!=0)
{
M->data[s].e=a[x][y];
M->tu++;
M->data[s].i=x;
M->data[s++].j=y;
}
}
}
}
//快速方法实现三元组顺序表表示的矩阵M转置为T
void fastTransposeSMatrix(TSMatrix *M,TSMatrix *T){
int col,p,q,t,num[MAX],cpot[MAX],i;
T->mu=M->nu;
T->nu=M->mu;
T->tu=M->tu;
if(T->tu)
{
for(col=0;col<M->nu;col++)
num[col]=0;
for(t=0;t<M->tu;t++)
num[M->data[t].j]++;
cpot[0]=0;
for(col=1;col<M->nu;col++)
cpot[col]=cpot[col-1]+num[col-1];
printf("num\n");
for(i=0;i<N;i++)
{
printf("%d ",num[i]);
}
printf("\n");
printf("cpot\n");
for(i=0;i<N;i++)
{
printf("%d ",cpot[i]);
}
printf("\n");
for(p=0;p<M->tu;p++)
{
col=M->data[p].j;
q=cpot[col];
T->data[q].i=M->data[p].j;
T->data[q].j=M->data[p].i;
T->data[q].e=M->data[p].e;
cpot[col]++;
}
}
}
int main(){
int a[N][N];
TSMatrix T,M;
int i,j;
for (i=0; i<N; i++){
for(j=0; j<N; j++)
scanf("%d",&a[i][j]);
}
reverse(a,&M);
printf("M\n");
printf("%d %d %d\n",M.mu,M.nu,M.tu);
for (i=0;i<M.tu;i++)
printf("%d %d %d\n",M.data[i].i,M.data[i].j,M.data[i].e);
fastTransposeSMatrix(&M,&T);
printf("T\n");
printf("%d %d %d\n",T.mu,T.nu,T.tu);
for (i=0;i<T.tu;i++)
printf("%d %d %d\n",T.data[i].i,T.data[i].j,T.data[i].e);
return 1;
}
稀疏矩阵的三元组存储及快速转置
原创wx641ed5d0bdd07 ©著作权
©著作权归作者所有:来自51CTO博客作者wx641ed5d0bdd07的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:稀疏矩阵的三元组存储及快速转置
下一篇:对称矩阵压缩存储
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】特殊矩阵的压缩存储
【数据结构】第三章——栈、队列与数组详细介绍特殊矩阵的压缩存储……
数据结构 C语言 矩阵 压缩存储 数组 -
稀疏矩阵之三元组压缩存储并且转置
代码演示:// δ=t/(n?m) <= 0.05 则证明是稀疏矩阵/* 稀疏矩阵的类型说
稀疏矩阵 转置 #include -
数据结构:稀疏矩阵的三元组顺序表
//----------------稀疏矩阵的三元组顺序存储表
三元组 转置 稀疏矩阵 -
Redis set 数据结构怎么取
从 redis 内部实现的角度来说,redis 提供了 sds, dict, skiplist, ziplist 和 quicklist 数据结构,初步计划分为以下系列文章对 redis 数据结构进行归纳总结:redis 底层数据结构(1)——sdsredis 底层数据结构(2)——dictredis 底层数据结构(3)——skiplistredis 底层数据结构(4)——ziplis
Redis set 数据结构怎么取 c++数据结构代码整理 怎么给结构体数组动态分派内存 字符串 redis