03-稀疏矩阵

二维数组表格内容

为了提高内存使用效率,压缩表示

?

压缩,是将有效的数据保存下来,上述中无效的数据直接进行了抛弃,而现实中,往往会将重复的数据视为一个有效数据存储,在上述结构中稍作修改即可实现。

?

#include?<iostream>

using?namespace?std;?

?

void?printDepress(int?arr[][3])

{

? ??cout<<"------"

? ? ? ? <<arr[0][0]<<" "

? ? ? ? <<arr[0][1]<<" "

? ? ? ? <<arr[0][2]<<"----"<<endl;

? ??for?(int?i=1; i<=arr[0][2]; ++i) {

? ? ? ??for?(int?j=0; j<3; ++j) {

? ? ? ? ? ??cout<<arr[i][j]<<" ";

? ? ? ? }

? ? ? ??cout<<endl;

? ? }

}

?

int?main()

{

? ??int?data[5][10] = {

? ? ? ??0,0,1,0,0,0,0,0,0,0,

? ? ? ??0,0,0,9,0,0,0,0,0,0,

? ? ? ??0,0,0,0,0,2,0,0,0,0,

? ? ? ??0,0,0,0,3,0,0,0,0,0,

? ? ? ??0,0,0,0,0,0,0,6,0,0

? ? };

? ??int?count =?0;

? ??int?depress[20][3];

? ? depress[0][0] =?5;

? ? depress[0][1] =?10;

? ??for?(int?row=0; row<5; ++row) {

? ? ? ??for?(int?col=0; col<10; ++col) {

? ? ? ? ? ??if?(data[row][col] !=?0) {

? ? ? ? ? ? ? ? ++count;

?? ? ? ? ? ? ? ? depress[count][0] = row;

? ? ? ? ? ? ? ? depress[count][1] = col;

? ? ? ? ? ? ? ? depress[count][2] = data[row][col];

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ??//?有效数据个数

? ? depress[0][2] = count;

? ??printDepress(depress);

? ??return?0;

}

?

结果:

------5 10 5----

0 2 1?

1 3 9?

2 5 2?

3 4 3?

4 7 6?

Program ended with exit code: 0

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

时间: 2024-10-29 03:17:11

03-稀疏矩阵的相关文章

5-3-行逻辑链接的顺序表(稀疏矩阵)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 行逻辑链接的顺序表(稀疏矩阵) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试

开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式

原文:[原创]开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式 开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math.NET(一)综合介绍   2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算   3.开源.NET基础数学计算组件Math.NET(三)C#解析Matlab的mat格式   4.开源.NET基础数学类库使用Math.NET(四)C#解析Matrix Marke数据格式   5.开源.NET基

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

前端开发神器WebStorm--Grunt 搭建环境(03)

通过上一篇前端开发神器WebStorm--自动化工作流(前言),相信大家都Grunt自动化工具有了初步了解. 接下来我就以WROC3000 web为原型,演示一下如何使用Grunt工具提高工作效率,最大程度压缩代码. 1.首先安装node环境 进入官网 下载安装.(记住安装目录) 检测安装成功方法:打开CMD窗口,输入 node --version 会打印出安装的版本号,说明已经安装成功. 2.安装 Grunt 客户端 在CMD 窗口中,切换到node安装盘符,会自动切换到nodejs安装目录.

MyBatis笔记03

1.动态sql 01.if:单独使用if,后面必须有where 1=1 代码:<!-- 需要注意的事项:01. 在xml文件中 特殊字符的使用 &&必须换成 and或者 & < < > > <= <= >= >= ' &apos;" " 02.因为不确定用户输入的到底是哪个参数 所以 where 之后必须加上 1=1 而且 每个条件之前加上 and --> <select id="

Environmental.Science.Limited.ChemHELP.v2.03

Environmental.Science.Limited.ChemHELP.v2.03 VMGSIM.V9.0.46最新版流程模拟软件     chemhelp易于安装和设置(系统要求如下).在一台电脑上,化学制品可以从数据库中选择,输入他 们的全名,或者使用一个搜索,可以指定一个部分的化学名称,中国科学院或联合国的数字,欧共体或欧 共体指数,甚至是一个风险短语.可以为选定的化学物显示的数据包括索引编号.危险符号.芯片分类和 标签.风险短语.物理性质.同义词.以及更多.正如这表明,在数据库中的

稀疏矩阵的三元组顺序表的C语言实现

对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器.如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()的第二个参数进行排序,另外,如果不想使用默认的分类顺序进行排序,同样也可以传递一个Comparato

UML大战需求分析——阅读笔记03

读<UML大战需求分析>有感03 状态机图和活动图在样子比较相似,但状态机图是用来为对象的状态及造成状态改变的事件建模.我们大二学习UML统一建模语言状态机图模块时了解到,UML的状态机图主要用于建立对象类或对象的动态行为模型,描述系统中某一个对象所经历的各个状态.引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作.但在以前的学习过程中,我们并没有学到过"伪状态",后经查阅知:伪状态是指在一个状态机中具有状态的形式,同时具有特殊行为的顶点.它是一个瞬时状态,用于构造

算法----稀疏矩阵之三元组

三元组的表示 (1).目的:对于在实际问题中出现的大型的稀疏矩阵,若用常规分配方法在计算机中储存,将会产生大量的内存浪费,而且在访问和操作的时候也会造成大量时间上的浪费,为了解决这一问题,从而善生了多种解决方案. (2).由于其自身的稀疏特性,通过压缩可以大大节省稀疏矩阵的内存代价.具体操作是:将非零元素所在的行.列以及它的值构成一个三元组(i,j,v),然后再按某种规律存储这些三元组,这种方法可以节约存储空间. 具体如下图: #define SMAX 1000 typedef struct {

条款03:尽可能使用const

01.顶层const和底层const char greeting[] = "Hello"; char* p = ; const char* p = greeting;   //const data,nonconst pointer char* const p = greeting;       //nonconst data,const pointer const char* const p = greeting; //const data,nonconst pointer.*的左右位