稀疏矩阵三元组求转置
来源:互联网 发布:吉他谱搜索软件 编辑:程序博客网 时间:2024/06/05 05:58
具体什么是稀疏矩阵,可以参见下面博客
http://blog.csdn.net/tiredoy/article/details/24435443
http://c.biancheng.net/cpp/html/969.html
下面是参考了部分博客后,自己实现的代码,其中有好多问题,在调试解决的过程中,解决了问题,并收获了很多。参见具体注释。
#include <stdio.h>#include <stdlib.h>#define SMAX 1024 /*一个足够大的数*///typedef datatype int;/* 该程序的意图是,输入一个稀疏矩阵的三元组表示的数据,根据其三元组表示形式求其转置*///表示每个三元组元素的结构体typedef struct{ int i,j; //元素的行和列信息 int v;<span style="white-space:pre"></span>//存储 i 行 j 列上的元素的值}Node;//表示某个三元组的结构体typedef struct{ int m,n,len; //该三元组存储的矩阵 有 m 行 n 列 Node data[SMAX];<span style="white-space:pre"></span>// 该三元组中 最多有 SMAX 个节点}SMatrix;//通过键盘输入的方式,建立三元组//需要注意的是,如果M的类型是 SMtrix * 时,其操作其数据的方式应该是 M->m//若 M 的类型是 SMatrix 时,则操作数据的方式时 M.mvoid createMatrix(SMatrix *M){ printf("请输入稀疏矩阵的行数:"); scanf("%d",&(M->m)); printf("请输入稀疏矩阵的列数:"); scanf("%d",&(M->n)); printf("请输入表示稀疏矩阵的三元组的行数:"); scanf("%d",&M->len); int i; for(i=1;i<=M->len;i++){ printf("请输入第%d个元素的行号列号及其元素的值",i); scanf("%d %d %d",&M->data[i].i,&M->data[i].j,&M->data[i].v); }}// 该子函数赋值打印一个三元组void printSmtrix(SMatrix *M){ int p; for(p=1;p<=M->len;p++){ printf("%d %d %d",M->data[p].i,M->data[p].j,M->data[p].v); printf("\n"); }}//需要注意的是,如果M的类型是 SMtrix * 时,其操作其数据的方式应该是 M->m//若 M 的类型是 SMatrix 时,则操作数据的方式时 M.m// 该子函数负责 根据三元组求其转置矩阵,注意其形参分别为 SMatrix 类型 和 SMatrix* 类型//SMatrix 类型的形参 M 主要负责带过来其需要利用到的原始三元组数据//SMatrix* 类型的形参 N 主要负责根据M 中的数据得到转置后的三元组,之所以N 为指针类型,是因为,其//经过处理后的数据,我们在打印和主函数中都需要用到,所以此时传递过来地址是非常有必要的,我们在其他函数中拿到这个地址,就能//对其中的数据进行操作了,这正是指针的魅力所在。void transMatrix(SMatrix M,SMatrix *N){ N->m = M.n; N->n=M.m; N->len=M.len; int p,q; int j=1; for(p=1;p<=M.len;p++){ for(q=1;q<=M.len;q++){ if(M.data[q].j==p){ N->data[j].i=M.data[q].j; N->data[j].j=M.data[q].i; N->data[j].v=M.data[q].v; j++; } } } printSmtrix(N);}//该程序中,务必要注意的是 M N &M & N 等数据的类型,其具体类型是什么,可通过CODEBLOCK中的debug功能,打断点查看//不失为一种好的办法int main(){ SMatrix M,N; createMatrix(&M); printSmtrix(&M); transMatrix(M,&N); printSmtrix(&M); printSmtrix(&N);}
0 0
- 稀疏矩阵三元组求转置
- 稀疏矩阵-三元组
- 三元组稀疏矩阵类
- 稀疏矩阵三元组存储
- _DataStructure_C_Impl:稀疏矩阵三元组
- 稀疏矩阵三元组转化
- 稀疏矩阵的三元组
- 二维矩阵转三元组(稀疏矩阵)
- (十五)稀疏矩阵和三元组稀疏矩阵压缩算法
- 稀疏矩阵相乘——三元组稀疏矩阵
- 数据结构-稀疏矩阵(三元组表示)
- 数据结构作业稀疏矩阵三元组表示
- 稀疏矩阵 三元组顺序表
- 稀疏矩阵 三元组顺序存储
- 稀疏矩阵的三元组存储结构
- 稀疏矩阵乘法(三元数组存储)
- 稀疏矩阵的转置用三元组表示
- 【数据结构】 稀疏矩阵 转换成三元组
- Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- 守护进程
- 全局变量、静态全局变量、局部变量、静态局部变量
- Day11 异常、File类、流知识点总结
- Swift 析构(Deinitialization)
- 稀疏矩阵三元组求转置
- hdu 2044 一只小蜜蜂 题解
- CNN MODEL 总结
- GCDOnce
- HTML——入门介绍
- 排序的编程与实现
- 湖南省首届逻辑推理大赛(中南大学)
- DDL、DML
- Mybatis中一对一映射详解