当前位置:网站首页>数组和特殊矩阵的压缩存储
数组和特殊矩阵的压缩存储
2022-07-23 13:47:00 【夜深人静码代码】
目录
一、数组的相关概念
1、声明格式:数据类型 变量名称[行数] [列数]
例:int num[5] [8]
在C语言中,一个二维数组类型也可以定义为一维数组类型(其分量类型为一维数组类型)。
2、三维数组:若二维数组中的元素又是一个一维数组,则称作三维数组。
n维数组:若n-1维数组中的元素又是一个一维数组结构,则称作n维数组。
3、结论:线性表结构是数组结构的一个特例,而数组结构又是线性表结构的扩展。
4、数组特点:结构固定——定义后,维数和维界不再改变。
二、数组的抽象数据类型定义
1、数组的基本操作:除了结构的初始化和销毁之外,只有取元素和修改元素值的操作。
2、基本操作:
(1) InitArray (&A,n, bound1, ...boundn) //构造数组A
(2) DestroyArray (&A) //销毁数组A
(3) Value(A, &e,index1,...,indexn) //取数组元素值
(4) Assign (A, &e,index1,...,indexn) //给数组元素赋值
三、数组的顺序存储结构
1、因为:数组特点:结构固定维数和维界不变。数组基本操作:初始化、销毁、取元素、修改元素值,一般不做插入和删除操作。
所以:一般都是采用顺序存储结构来表示数组。
注意:数组可以是多维的,但存储数据元素的内存单元地址是一维的, 因此,在存储数组结构之前,需要解决将多维关系映射到一维关系的问题。
2、两种顺序存储方式:①以行序为主序(低下标优先)②以列序为主序(高下标优先)
例如:以行序为主序:设数组开始存储位置LOC( 0, 0 ),存储每个元素需要L个存储单元则数组元素a[i][j]的存储位置是: LOC( i, j)= LOC(0,0)+(n*i+j)*L。(n为每一行所含有的元素个数,n*i+j表示在a[i][j]前面所有元素个数)。
四、特殊矩阵的压缩存储
1.压缩存储的定义:若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间。
2.能够压缩的矩阵:一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。
3.稀疏矩阵:矩阵中非零元素的个数较少(一般小于5%)。
4、压缩存储的原则:存各非零元的值、行列位置和矩阵的行列数。
五、稀疏矩阵的顺序存储方法——三元组存储
1、三元组(i,j,Aij)可以唯一确定矩阵的一个非零元素。
2、三元组顺序表的优点:非零元在表中按行序有序存储,因此便于进行依行顺序处理的矩阵运算。
3、三元组顺序表的缺点:不能随机存取,若按行号存取某一行中的非零元,则需从头开始进行查找。
六、稀疏矩阵的链式存储方法——十字链表
1、优点:它能够灵活地插入因运算而产生的新的非零元素,删除因运算而产生的新的零元素,实现矩阵的各种运算。
2、在十字链表中,矩阵的每一个非零元素用一个结点表示,该结点除了(row, col, value) 以外,还要有两个域:
①right:用于链接同一行中的下一个非零元素;
②down:用以链接同一列中的下一个非零元素。
3、十字链表中结点的结构示意图

边栏推荐
- 零基础怎么自学软件测试?十年测试老鸟最强软件测试学习路线图
- Ie box model and standard box model
- Eureka笔记
- What are the principal guaranteed financial products with an annual interest rate of about 6%?
- C语言基础篇 —— 2-4 指针的数据类型含义和强制类型转换的解析
- Is it safe for online account managers to open accounts when choosing securities companies in flush
- Fundamentals of C language -- 2-6 pointers, arrays and sizeof operators
- Nodejs implements token login registration (koa2)
- MATLAB基础
- How does MySQL query data that is not in the database?
猜你喜欢

Heartless sword English Chinese bilingual poem 006. to my wife

Solve data functions should return an object (property "visible" must be accessed with "$data.visible")

IDEA中给项目添加依赖的jar包

Direct exchange

MongoDB数据库+图形化工具下载安装及使用

灰色关联分析(MATLAB)

Squeeze-and-Excitation Networks(挤压和激励网络)

层次分析法(MATLAB)

js如果小数是0就减去,不是就保留

fio性能测试工具
随机推荐
C语言基础篇 —— 2-5 指针与函数知识点
Deep learning convolutional neural network paper study alexnet
TOPSIS法(MATLAB)
MATLAB基础
检测器:用递归特征金字塔和可切换的阿托洛斯卷积检测物体
SSD: Single Shot MultiBox Detector
Nodejs implements token login registration (koa2)
SSD: Single Shot MultiBox Detector
【无标题】
docker 安装redis
Fundamentals of C language -- 2-6 pointers, arrays and sizeof operators
Bag of tricks for image classification "with convolutional neural networks"
Notes on Microcomputer Principle and technical interface
Nifi 1.16.3 cluster setup +kerberos+ user authentication
Docker install redis
灰色关联分析(MATLAB)
智慧物联网源码 带组态物联网源码 工业物联网源码:支持传感器解析服务,数据实时采集和远程控制
[31. Maze walking (BFS)]
NodeJs实现token登录注册(KOA2)
Summary of after class homework of Microcomputer Principle and technical interface