数据结构实验报告之三元组顺序表存储的稀疏矩阵练习

数据结构之稀疏矩阵三元组快速转置笔记详解 首先先说一些相关定义:(已经有相关定义认识的可以跳过1、2、3点) 1、稀疏矩阵: 定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于0.05时,则称该矩阵为稀疏矩阵(sparse matrix),该比值称为这个矩阵的稠密度;与之相区别的是,如果非零元素的分布存... 阅读详情

一、实验内容

1.实验目的

为了更加深入了解三元组以及稀疏矩阵,学会快速转置稀疏矩阵的算法设计并以此为基础思考其他相关问题。本次实验主要以解决某特定6阶稀疏矩阵三对角线元素之和以及转置该6阶矩阵为目的而进行算法设计以及代码实现。

2.实验内容
(1)构建一个三元组顺序表存储的稀疏6阶方阵
(2)求解该方阵中三条对角线上的元素之和
(3)实现该方阵的快速转置
(4)实现代码并输出相关数据                                                                              

一.要实现(1)只需要给与指定的行、列以及元素值即可。本次实验原稀疏矩阵设置为S,转置矩阵设置为T,下面展示的是S以及S对应的三元组:

S
000000
100000
000200
000000
003000
000004
S.mu=6S.nu=6S.tu=4
S.dataije
0
1211
2342
3533
4664

即转置后的T方阵以及对应的三元组应当如下所示:

T
010000
000000
000030
002000
000000
000004
T.mu=6T.nu=6T.tu=4
T.dataije
0
1121
2353
3432
4664

二.为实现(2)中的三对角线总和,本此实验设计了一个sumDiagnoal3函数以求和。

三.快速转置算法为课上所学FastTransposeTSMatrix函数,并给与了更加详细的描述。

四.实验输出见下文(三、实验结果)。

二、实现过程

本次实验环境:macOS Mojave, Xcode, gcc, C99

根据实验要求,本次实验依次设计了两个函数以完成三对角线求和方阵转置,并给与较为清晰的输出。下面是实验过程:


1.编译预处理以及使用类别名

编译预处理以及使用类别名,并没有使用到过大的矩阵但还是将MAXSIZE设置的足够大,创建了三元组(Triple)结构体以及稀疏矩阵(TSMatrix)结构体如下所示:

#include <stdio.h>
#define MAXSIZE 12500
#define OK 1
#define ERROR 0
typedef int Status, ElemType;
typedef struct {
   int i, j;//该非零元素的行下标和列下标
   ElemType e;
} Triple;
typedef struct {
   Triple data[MAXSIZE+1];//非零元三元组表,data[0]未用
   int mu, nu, tu;//矩阵的行数,列数和非零元个数
} TSMatrix;//稀疏矩阵

2.sumDiagnoal3()函数

计算三条对角线元素之和的函数(sumDiagnoal3),如下所示:
初实现求和算法时并没有仔细考虑,但是突然产生一个念想,要是这次实验要我们完成的是五条对角线呢?于是带着这样的想法,我决定吧算法单独作为一个小函数拿出来。

int sumDiagonal3(TSMatrix S) {//求三条对角线上元素之和
   int i, sum=0;
   for(i=1; i<=S.tu; i++) {
      if((S.data[i].i-S.data[i].j)<=1 && (S.data[i].j-S.data[i].i)<=1)
         sum += S.data[i].e;
   }
   return sum;
}

3.FastTransposeTSMatrix()函数

快速转置算法(FastTransposeTSMatrix),如下所示:
由于该函数实现机制过于巧妙,故在编写代码时我添加了很多的注释以帮助自己读懂。不妨下面我再解释几行较为难懂的代码,一遍日后复习时需要使用:

Status FastTransposeTSMatrix(TSMatrix M, TSMatrix *T) {
   //采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵T。
   T->mu=M.nu; T->nu=M.mu;T->tu=M.tu;
   int col,t;//col指示列,t指示元素个数
   int num[M.mu], cpot[M.mu];//分别表示M矩阵中第col列非零元素个数 和
   if(T->tu) {               //M中第col列的第一个非零元在T->data中的恰当位置
      for(col=1; col<=M.nu; ++col) num[col]=0;//均赋初值为0
      for(t=1; t<=M.tu; ++t) ++num[M.data[t].j];//求M每一列中含非零元素个数
      cpot[1]=1;
      //求第col列中第一个非零元在b.data的序号
      for(col=2; col<=M.nu; ++col) cpot[col]=cpot[col-1]+num[col-1];
      for(int p=1,q; p<=M.tu; ++p) {//p是M.data的下标,q是T->data的下标,两两对应
         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];//换元素
      }//for
   }//if
   return OK;
}//FastTransposeTSMatrix

解释:line1:由于是基于C设计的算法,故使用指针来传入T(因为需要传出);line5:num与cpot数组为教材上讲到的两个辅助向量(page100),num用来指示原方阵每一列非零元素的个数,cpot用来指示原方阵每一列的第一个非零元素在转置矩阵的data数组中恰当的位置(即指示下标);line8:求出原矩阵每一列非零元素个数并给num数组完成赋值(这里的赋值算法很巧妙,值得细究);line9:总所周知cpot[1]=1;line11:利用公式cpot[i]=cpot[i-1]+numi-1给每一个cpot赋值;line12-17:p指示原方阵的data数组的下标,q指示转换后的方阵的data数组的下标,data三元组即为存放非零元素的数组。


4.主函数
4.主函数,如下分成四块:
(main1)
int main() {
   TSMatrix S,T;
   S.mu=6; S.nu=6; S.tu=4;
   S.data[1].i=2; S.data[1].j=1; S.data[1].e=1;
   S.data[2].i=3; S.data[2].j=4; S.data[2].e=2;
   S.data[3].i=5; S.data[3].j=3; S.data[3].e=3;
   S.data[4].i=6; S.data[4].j=6; S.data[4].e=4;
(main2)
   printf(" 稀疏矩阵S共有%d个元素,分别为:\n", S.tu);
   int k;
   for(k=1; k<=S.tu; k++)
      printf(" 第%d行、第%d列:%d\n", S.data[k].i, S.data[k].j, S.data[k].e);
(main3)
   printf(" 三对角元素之和为:%d\n",sumDiagonal3(S));
(main4)
   FastTransposeTSMatrix(S, &T);//将S转置为T
   printf("\n *****将稀疏矩阵S转置为稀疏矩阵T*****\n\n");
   printf(" 稀疏矩阵T共有%d个元素,分别为:\n", S.tu);
   for(k=1; k<=T.tu; k++)
      printf(" 第%d行、第%d列:%d\n", T.data[k].i, T.data[k].j, T.data[k].e);
   printf("\n");
}

解释:main1部分定义了原方阵S和转置后的方阵T,并将稀疏矩阵S的非0元素的行列以及值赋值;main2部分进行了一次输出,给出了S的非0元个数并把其所在的行列以及值展示出来;main3部分输出S三对角线元素之和;main4部分转置S为T并输出方阵T的相关信息。

三、实验结果

输出结果如图3-1所示

在这里插入图片描述

四、编程时遇到的问题

鲁棒性问题:在进行实验的第三大步:实验结果输出时我想到此次试验没有考虑到鲁棒性。而要实现鲁棒性就要考虑在初始化S三元组时的随机性了,所以需要使用到rand随机函数,但是由于本次实验耗时太久(主要核心算法用时太久了),所以实现鲁棒性的操作等空闲时间来做吧!下次一定!

五、总结

三元组在处理非零元素极少的稀疏矩阵时有奇效!确实是这样,但是我偷偷试了试时间复杂度为n*m的算法,直观感受不到运行速度的差距,不过我这只是个6X6的方阵而已啦!等到以后处理的数据量庞大起来,就不可能考虑那么费时的代码了。

六、完整代码

附上完整代码

#include <stdio.h>
#define MAXSIZE 12500
#define OK 1
#define ERROR 0
typedef int Status, ElemType;
typedef struct {
   int i, j;//该非零元素的行下标和列下标
   ElemType e;
} Triple;
typedef struct {
   Triple data[MAXSIZE+1];//非零元三元组表,data[0]未用
   int mu, nu, tu;//矩阵的行数,列数和非零元个数
} TSMatrix;//稀疏矩阵

Status FastTransposeTSMatrix(TSMatrix M, TSMatrix *T) {
   //采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵T。
   T->mu=M.nu; T->nu=M.mu;T->tu=M.tu;
   int col,t;//col指示列,t指示元素个数
   int num[M.mu], cpot[M.mu];//分别表示M矩阵中第col列非零元素个数 和
   if(T->tu) {               //M中第col列的第一个非零元在T->data中的恰当位置
      for(col=1; col<=M.nu; ++col) num[col]=0;//均赋初值为0
      for(t=1; t<=M.tu; ++t) ++num[M.data[t].j];//求M每一列中含非零元素个数
      cpot[1]=1;
      //求第col列中第一个非零元在b.data的序号
      for(col=2; col<=M.nu; ++col) cpot[col]=cpot[col-1]+num[col-1];
      for(int p=1,q; p<=M.tu; ++p) {//p是M.data的下标,q是T->data的下标,两两对应
         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];//换元素
      }//for
   }//if
   return OK;
}//FastTransposeTSMatrix

int sumDiagonal3(TSMatrix S) {//求三条对角线上元素之和
   int i, sum=0;
   for(i=1; i<=S.tu; i++) {
      if((S.data[i].i-S.data[i].j)<=1 && (S.data[i].j-S.data[i].i)<=1)
         sum += S.data[i].e;
   }
   return sum;
}

int main() {
   TSMatrix S,T;
   S.mu=6; S.nu=6; S.tu=4;
   S.data[1].i=2; S.data[1].j=1; S.data[1].e=1;
   S.data[2].i=3; S.data[2].j=4; S.data[2].e=2;
   S.data[3].i=5; S.data[3].j=3; S.data[3].e=3;
   S.data[4].i=6; S.data[4].j=6; S.data[4].e=4;
   printf(" 稀疏矩阵S共有%d个元素,分别为:\n", S.tu);
   int k;
   for(k=1; k<=S.tu; k++)
      printf(" 第%d行、第%d列:%d\n", S.data[k].i, S.data[k].j, S.data[k].e);

   printf(" 三对角元素之和为:%d\n",sumDiagonal3(S));
   
   FastTransposeTSMatrix(S, &T);//将S转置为T
   printf("\n *****将稀疏矩阵S转置为稀疏矩阵T*****\n\n");
   printf(" 稀疏矩阵T共有%d个元素,分别为:\n", S.tu);
   for(k=1; k<=T.tu; k++)
      printf(" 第%d行、第%d列:%d\n", T.data[k].i, T.data[k].j, T.data[k].e);
   printf("\n");
}
数据结构实现稀疏矩阵(采用三元组表示)的基本运算 数据结构实现稀疏矩阵(采用三元组表示)的基本运算 目的 领会稀疏矩阵三元组存储结构及基本算计运算 内容 假设n*n的稀疏矩阵A采用三元组表示,设计一个程序实现以下功能 生成以下两个稀疏矩阵的三元组a和b 输出a转置矩阵的三元组 输出a+b的三元组 输出a*b的三元组 源代码(经VS、decC++编译通过) #include <stdio.h> #include <stdboo... 阅读详情

相关推荐

C++实现稀疏矩阵的操作,三元组存储---数据结构

顺序存储结构来表示三元组表,则可以的稀疏矩阵的一种压缩形式。三元组表又称有序的双下标法,它的特点是,非零元素在表中有序存储,因此便于进行依行顺序处理矩阵运算。 1.需求分析: (1) 输入的形式和输入值的范围:无需自己输入数据,程序是可以自动生成一个稀疏矩阵并输出在界面中。 (2)输出的形式:建立成功后会将三元组表中的数据按照每个元素所在的行号,列号输出元素值;稀疏矩阵的加法则基于三元组表,将两个三元组表的元素进行合并成一个三元组表,然后按照合成的三元组表输出稀疏矩阵信息。 (3) 程序所能达到的功能: 1

Original_xin的博客 5273

数据结构——三元组的完整详细操作(实验报告)

三元组基本操作 首先建一个项目,就叫Triplet 新建三个文件 Tripletc.h文件 #ifndef TRIIPLET_H_INCLUDED #define TRIIPLET_H_INCLUDED #include<bits/stdc++.h> using namespace std; #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int status;

qiqiqililili的博客 4264

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

数据结构·练习·稀疏矩阵的快速转置 一、问题描述 一个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表示

zhoujianqing2020的博客 5669

数据结构三元组实验报告_数据结构实验报告

实验一约瑟夫问题实验学时:3学时实验类型:设计实验要求:必修一、实验目的熟练掌握线性链表的基础知识;能够使用C++或其他程序设计语言编程实现线性链表;能够使用线性链表构造正确而且时间复杂度低的算法解决实际问题;锻炼程序设计能力。二、实验内容M个教徒和N个非教徒在深海上遇险,必须将N个人投入海中,其余的人才能幸免于难,于是想了一个办法:所有人围成一圆圈,从第一个人开始依次报数,每数到第K个人就将他扔...

weixin_39843782的博客 478

顺序表练习(二):稀疏矩阵的三元组压缩储存及其简单运算实现

这次要实现的是: 以三元组的形式压缩储存稀疏矩阵 一些辅助函数 二分查找矩阵的某个元素 实现矩阵的转置、加法、乘法运算

Melonl的博客 4558

Dify部署后访问报502?手把手教你排查和修复Nginx反向代理问题

本文针对Dify部署后常见的502 Bad Gateway错误,提供了从基础容器状态检查到Nginx配置与Docker网络诊断的完整排查流程。详细解析了错误本质,并给出动态服务发现修复与静态IP配置两种解决方案,帮助开发者彻底解决Nginx反向代理问题,确保Dify平台稳定访问。

rnn9storyteller的博客 1096

(数据结构第五章)稀疏矩阵三元顺序表存储

///以顺序存储结构来表示三元组表,则可得稀疏矩阵的一种压缩存储方式 ///三元组顺序表 ///*************稀疏矩阵的三元组顺序存储表示*************** #include #include using namespace std; #define MAXSIZE 12500 /// 假设非零元个数最大值为12500 #define OK 1 typedef stru

Dosth_Magic 2001

国腾|GM8775C替换TC358775/MIPI转双通道LVDS

1 产品概述 GM8775C 型DSI 转双通道 LVDS 发送器产品主要实现将MIPI DSI 转单/双通道 LVDS 功能,MIPI 支持 1/2/3/4 通道可选,最大支持 4Gbps 速率。LVDS时钟频率最高154MHz,最大支持视频格式为 FULL HD(1920 x 1200)。 该芯片主要应用于手持设备、双屏显示,大屏幕显示等应用需求。 2 产品特征 a) I/0电源电压:1.8V /3.3V; b) core 电源电压...

Vasse的博客 1073

【数据结构】稀疏矩阵存储的三种方法及三元组表示稀疏矩阵转置算法的两种实现 —— C++

【数据结构】稀疏矩阵存储的三种方法及三元组表示稀疏矩阵转置算法的两种实现 —— C++

枯木何日可逢春 3903

从零开始:MTK ISP调试中的ImagiqSimulator实战指南

本文详细介绍了MTK ISP调试中ImagiqSimulator的实战应用,从环境准备、参数加载到核心模块调整,提供全面的调试流程指南。重点讲解了DM模块参数优化技巧和常见问题解决方案,帮助工程师高效完成ISP调试工作,提升图像处理质量。

weixin_29168813的博客 489

宝塔面板+pbootCMS建站全流程:从服务器选购到上线优化(附常见问题排查)

本文提供了一份详尽的宝塔面板与pbootCMS建站实战指南。内容涵盖从云服务器选购、宝塔面板部署与安全加固,到pbootCMS安装、权限配置、数据库连接等核心步骤。同时深入讲解了PHP环境优化、Nginx伪静态设置、缓存开启等性能与SEO优化技巧,并附有常见问题排查与后期维护建议,帮助用户高效、稳健地完成专业网站构建。

e4f5g6h的博客 660

数据结构三元组实验报告_数据结构线性表实验报告

一、实验目的:1、 复习c/c++语言,并实现简单的算法设计。2、 掌握结构体类型/类的定义方法以及自定义数据类型使用。3、 掌握函数的设计和调用。4、 学会理解ADT(Abstract Data Type)描述,从而利用程序语言加以实现。5、 学会基本的程序组织方法和对抽象数据类型实现的应用。二、实验内容和要求实验内容:设计一个复数的抽象类型定义...

weixin_42322512的博客 926

Python爬虫实战:公共资源交易平台招标数据采集实战 - 从零构建企业情报系统(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1288

数据结构 稀疏矩阵三元组顺序表 基本操作

【数据结构】稀疏矩阵 三元组顺序表存储 基本操作 1.稀疏矩阵定义: 假设在 mn 的矩阵中,又t个元素不为零。δ = t/mn ,称δ为矩阵的稀疏因子,通常定义δ小于等于0.05时称为稀疏矩阵。 2.三元组顺序表存储结构 矩阵中每个元素用三个量存储,位置i,j 以及值e typedef struct { int i, j; //三元组的行列值 ElemType e; }Triple; ...

欢乐佛的博客 1万+

恶劣天气下的分割鲁棒性:雨雪雾干扰消除

恶劣天气下的分割鲁棒性:雨雪雾干扰消除​ ,人工智能,计算机视觉,大模型,AI,本文围绕恶劣天气下语义分割鲁棒性及雨雪雾干扰消除展开,分析了雨雪雾对图像和分割任务的影响,介绍了基于图像增强、深度学习等现有解决方法,以及针对不同干扰的具体方案,还探讨了提高分割鲁棒性的策略、实验评估情况,指出当前面临复杂天气、数据缺乏、实时性等挑战,并展望了端到端模型、无监督学习等未来发展趋势,为该领域研究提供了全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

【RT-DETR涨点改进】全网独家首发Conv改进篇 | SCI一区 2025 | RT-DETR引入轻量级CGHalfConv通道分组半卷积模块,含多种创新改进、有效提升检测精度

本文介绍引入 GC Half-convolution 模块可以显著提升 RT-DETR 在资源受限环境下的性能。该模块通过通道分组与半卷积结合,有效减少了参数量与计算量,增强了模型对不同尺度和复杂背景下目标的特征提取能力。在保持模型轻量化的同时,GC Half-convolution 能够更细致地区分目标的边缘纹理、颜色、结构等关键信息,从而提升检测精度。特别是在面对小目标、多类别、形态相近的目标时,该模块能提取更具判别性的局部与全局特征,优化 RT-DETR 的检测效果,并加快推理速度。

Ai缝合怪、助力小伙伴高效发论文 745

数据结构与算法 & 稀疏矩阵 & 三元组顺序表

一、稀疏矩阵 1.定义(百度): 矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律, 通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于0.05时,则称该矩阵为稀疏矩阵(sparse matrix),该比值称为这个矩阵的稠密度 2.表示方法 三元组顺序表 行逻辑连接的顺序表 十字链表 本文讲的是三元组顺序表 3.稀疏矩阵三元组顺序表法 行序\ \列序 ...

Sticker的博客 1万+

飞牛 NAS 部署 Hermes Agent 全指南:打造 24 小时在线、自我进化的 AI 智能体!

当大多数人还在把 AI 当聊天机器人使用时,我已经把它部署到了家里的飞牛 NAS 上,让它 24 小时在线工作、记忆我的习惯、自动执行任务,甚至还能不断学习新的技能。今天带你从零搭建这个真正属于自己的 AI Agent。🚀

XiaoqiangClub的博客 1225

三元组顺序表存储稀疏矩阵并实现两种转置算法

稀疏矩阵    当矩阵中只有极少的非零元素,而且分布也不规律,如果非零元素个数只占矩阵元素总数的25%~30%或低于这个百分数时,这样的矩阵称为稀疏矩阵。三元组顺序表    对于稀疏矩阵中的非零元素来说,行号,列号以及元素值三项值可以唯一地确定该元素。元组顺序表中的三元恰好反映了这三项值,即(row,col,value),row代表行号,col代表列号,value代表元素值。然而,这样仍不能唯一地...

来自外星系的研究生 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数据结构——稀疏矩阵

数据结构——稀疏矩阵

Fizzoa的博客 2万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

数据结构之稀疏矩阵的三元组顺序表储存以及转置

今天学习了矩阵的压缩存储,主要是特殊矩阵和稀疏矩阵的压缩储存,特殊矩阵包括对称、对角、上下三角矩阵,实现起来比较方便,这里我主要实现了一遍稀疏矩阵的三元组顺序表存储实现以及两种矩阵转置方法。 稀疏矩阵 稀疏矩阵一直没有一个明确的定义,大概的解释就是矩阵中的非零元分布不是规律的,矩阵中非零元的个数占整个矩阵元个数的比例,该比例成为稀疏因子,只要稀疏因子小于等于0.05,则该矩阵就可叫做稀疏矩阵 三元...

Kmp算法C语言简单实现 7728

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

稀疏矩阵的三元组顺序表存储表示(第五章 P98)

稀疏矩阵的三元组顺序表存储表示 三元组顺序表存储结构: 三元组存储稀疏矩阵示例: typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */ typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */ typedef int ElemType; #in...

但行好事,莫问前程 5235

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

(C语言版)数据结构--稀疏矩阵 1、编写程序任意输入一个稀疏矩阵,用三元组顺序表压缩存储稀疏矩阵。 2、对稀疏矩阵进行转置,输出转置后的矩阵。

weixin_49691084的博客 7499

稀疏矩阵的运算——矩阵相加

南昌航空大学实验报告 课程名称: 数据结构A 实验名称: 实验五 稀疏矩阵运算 班 级: XXX 学生姓名: XXX 学号: XXXXX 指导教师评定: XXX 签 名: XXX 一、实验目的 数组是一种常用的数据类型,本实验是有关两个稀疏矩阵进行相加的应用。 通过对本实验的学习,可以理解矩阵的相关操作方法。 二、实验内容 在本...

qq_45767547的博客 1万+

【数据结构】三元组表的定义以及快速转置

三元组表的定义以及快速转置

程序员好冰的博客 1万+

三元组表实现稀疏矩阵的转置

求出原稀疏矩阵的每一列的第一个非0元素在转置后的三元组中的哪个位置,扫描原三元组列上元素依次存放到转置后的三元组位置。稀疏矩阵第一列中的第一个非0元素一定存放在转置后三元组数组的 0 位置,第二列的第一个非0元素的位置等于第一列第一个非0元素在转置后三元组数组的位置加上第一列的非0元素个数,以此类推。时间复杂度为O(n+t),n为矩阵的列数,t为矩阵非零元素的个数。"——————————原矩阵三元组—————————————""————————转制后的矩阵三元组————————————"

2301_80150315的博客 2280
上一篇: JavaFX之PathTransition类的使用-简单实例(一)PathTransitionDemo.java
下一篇: 数据结构算法04.17
nufe_wwt
博客等级 码龄7年 40粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值