数据结构·练习·三元组表法实现稀疏矩阵的转置

这篇具有很好参考价值的文章主要介绍了数据结构·练习·三元组表法实现稀疏矩阵的转置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据结构·练习·稀疏矩阵的快速转置

一、问题描述

一个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

#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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构--图的存储邻接表法

    邻接矩阵: 数组实现的顺序存储,空间复杂度高,不适合存储稀疏图 邻接表: 顺序+链式存储 无向图: 边结点的数量是 2|E|, 整体空间复杂度为 O(|V| + 2|E|) 有向图: 边结点的数量是 |E|, 整体空间复杂度为 O(|V| + |E|) 图的邻接表表示方式并不唯一 color{red}图的邻接表表示方

    2024年02月16日
    浏览(29)
  • 用三元组表实现稀疏矩阵的基本操作

    目录 问题描述 数据结构 算法设计 算法流程图  源代码  运行结果      ​    编写程序用三元组表实现稀疏矩阵的按列转置操作。 本设计使用三元组表实现。 程序中设计了三个函数: 1.函数InitSPNode()用来建立一个稀疏矩阵的三元组表。     首先输入行数、列数和非零元的

    2024年02月03日
    浏览(31)
  • [数据结构(C语言版本)上机实验]稀疏矩阵的三元组顺序表压缩存储以及转置实现(含快速转置)

    实现效果: 1、编写程序任意 输入 一个稀疏矩阵,用 三元组顺序表 压缩存储 稀疏矩阵 。 2、对稀疏矩阵进行 转置 , 输出 转置后的矩阵。 对应《数据结构(C语言版)》 第5章 数组与广义表 实验: 1、 掌握下三角矩阵的输入、输出、压缩存储算法; 2、 理解稀疏矩阵的三元

    2024年02月03日
    浏览(34)
  • 【数据结构】稀疏矩阵存储的三种方法及三元组表示稀疏矩阵转置算法的两种实现 —— C++

    1. 三元组顺序表数据结构 注意:data[]中的元素是按行存储或者按列存储的,所以 在将三元组逆置时,不能简单地将行列下标对换,data[]数组中元素的顺序也需要重新排列 2. 三元组表示稀疏矩阵转置算法1 3. 三元组表示稀疏矩阵转置算法2:快速转置 为了 便于随机存取任意一

    2024年02月05日
    浏览(31)
  • 初识数据结构之三元组

    在初步了解了数据结构的研究内容后,做一个简单的尝试——三元组。 三元组是数据结构里的一个基本概念。主要是用来存储稀疏矩阵的一种压缩方式,也叫三元组表。 三元组中存放三个值(x,y,z)分别代表矩阵的行、列、值。 ADT Triplet { 数据对象:D = {e1,e2,e3 | e1,e2,e3属于E

    2024年02月11日
    浏览(26)
  • 数据结构:三元组的构建、相加和快速转置

    目录 1.三元组表的定义 2.三元组表的数据结构 3.三元组表的构建 4.输出三元组表 5.两个三元组表相加  代码的流程图​  实现代码 6.三元组表的快速转置  算法思想  代码实现 7.三元组表输出矩阵 8.全部代码 9.总结         三元组研究目的 对于在实际问题中出现的大型的

    2024年02月02日
    浏览(29)
  • 三元组表的快速转置算法

    当我们在存储稀疏矩阵的时候(稀疏矩阵:矩阵中只包含有极少数的非0元素),由于稀疏矩阵只有少量关键元素(就是非0元素),我们将整个稀疏矩阵全部存储是十分浪费存储空间的,如何跳过这些非0元素,只存储关键元素以节约存储空间呢?这个时候,三元组表就出现了

    2024年02月07日
    浏览(32)
  • 数组:矩阵快速转置 矩阵相加 三元组顺序表/三元矩阵 随机生成稀疏矩阵 压缩矩阵【C语言,数据结构】(内含源代码)

    目录 题目: 题目分析: 概要设计: 二维矩阵数据结构: 三元数组三元顺序表顺序表结构: 详细设计: 三元矩阵相加: 三元矩阵快速转置: 调试分析: 用户手册: 测试结果:  源代码: 主程序:  头文件SparseMatrix.h:  头文件Triple.h: 总结: 稀疏矩阵A,B均采用 三元组

    2023年04月26日
    浏览(50)
  • 数据结构:链表基础OJ练习+带头双向循环链表的实现

    目录 一.leetcode剑指 Offer II 027. 回文链表 1.问题描述 2.问题分析与求解 (1) 快慢指针法定位链表的中间节点 (2) 将链表后半部分进行反转 附:递归法反转链表 (3) 双指针法判断链表是否回文 二.带头双向循环链表的实现 1.头文件 2.节点内存申请接口和链表初始化接口 3.链表的打

    2024年02月02日
    浏览(36)
  • 数据结构上机练习——单链表的基本操作、头文件、类定义、main函数、多种链表算法的实现,含注释

      头文件和源文件分开有很多好处:可以提高编译速度、提高代码的可维护性、提高代码的可重用性和可扩展性,同时也可以使代码结构更清晰,方便代码的管理和维护。 LinkList.h test.cpp                  (下面所有函数都默认在类中实现)   我们以

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包