[数据结构]非线性结构——多维数组
来源:互联网 发布:淘宝达人的短视频教程 编辑:程序博客网 时间:2024/05/16 08:28
多维数组和广义表是一种复杂的非线性结构,它们的逻辑特征是:一个数据元素可能有多个直接前驱和多个直接后继。
数组定义
数组是由n(n>1)个具有相同数据类型的数据元素a1,a2,... ,an组成的有序序列,且该序列必须存储在一块地址连续的存储单元中。
- 数组中的数据元素具有相同数据类型。
- 数组是一种随机存取结构,给定一组下标,就可以访问与其对应的数据元素。
- 数组中的数据元素个数是固定的。
多维数组
- 1、一维数组(向量)——常用数据类型
一维数组(向量)是存储于计算机的连续存储空间中的多个具有统一类型的数据元素。
同一数组的不同元素通过不同的下标标识。(a1,a2,…,an)
- 2、二维数组
二维数组Amn可视为由m个行向量组成的向量,或由n个列向量组成的向量。
二维数组中的每个元素Aij既属于第i行的行向量,又属于第j列的列向量。
- 3、多维数组
三维数组Amnp可视为以二维数组为数据元素的向量。四维数组可视为以三维数组为数据元素的向量……
三维数组中的每个元素Aijk都属于三个向量。四维数组中的每个元素都属于四个向量……
数组的顺序存储方式
由于计算机内存是一维的,多维数组的元素应排成线性序列后存入存储器。
数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。一般采用顺序存储方法表示数组。
行优先顺序
将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。
二维数组Amn的按行优先存储的线性序列为:a11,a12,…,a1n,a21,a22,…,a2n,……,am1,am2,…,amn。注意:
- ①PASCAL和C语言中,数组按行优先顺序存储。
- ②行优先顺序推广到多维数组,可规定为先排最右的下标。
列优先顺序
将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量后面。
二维数组Amn的按列优先存储的线性序列为:a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn。注意:
- ①FORTRAN语言中,数组按列优先顺序存储。
- ②列优先顺序推广到多维数组,可规定为先排最左的下标。
数组元素的地址计算公式
- 按行优先顺序存储的二维数组Amn地址计算公式:LOC(aij)=LOC(a11)+[(i-1)×n+j-1]×d
其中:
①LOC(a11)是开始结点的存放地址(即基地址)
②d为每个元素所占的存储单元数
③由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。即顺序存储的数组是随机存取结构。
- 按列优先顺序存储的二维数组Amn地址计算公式:LOC(aij)=LOC(a11)+[(j-1)×m+i-1]×d
- 按行优先顺序存储的三维数组Amnp地址计算公式:LOC(aijk)=LOC(a111)+[(i-1)×n×p+(j-1)×p+k-1]×d
- 下界不为1的二维数组的地址计算公式
①二维数组A[c1..d1,c2..d2]的地址计算公式:LOC(aij)=LOC(ac1c2)+[(i-c1)×(d2-c2+1)+j-c2]×d
②下界为0的二维数组的地址计算公式(C语言中使用):LOC(aij)=LOC(a00)+[i×(d2+1)+j]×d
- [数据结构]非线性结构——多维数组
- 非线性结构-多维数组
- 数据结构——字符串和多维数组
- 非线性数据结构——图
- 非线性结构——树
- 非线性结构——图
- 数据结构笔记——第四章字符串和多维数组
- 非线性数据结构——二叉树
- 笔记之数据结构之非线性结构
- java数据结构-非线性结构之树
- 数据结构(三):非线性逻辑结构-树
- 数据结构_非线性结构_图
- 【数据结构】非线性结构---树(基本概念)
- lua的数据结构 -- 多维数组
- 《数据结构》第四章 字符串和多维数组 知识结构导图——信管1133-09
- 数据结构复习——第四章:串、多维数组和广义表
- 数据结构思维导图——第四章:字符串和多维数组
- UE4结构体数组之多维数组
- MFC单文档设定窗口大小固定
- 字符流与字节流的区别
- Begin my fist blog in CSDN
- Powershell 通过POP3接收邮件
- c++实现文件拷贝,不用system函数
- [数据结构]非线性结构——多维数组
- 最简单的实现用户自定义的字符串的输入的输出显示
- leveldb源码分析 之 入门使用
- Android Launcher开发学习--简易Launcher开发
- 多态和抽象类
- Android自定义之TextView跑马灯的监听
- spring MVC环境搭建
- Java Socket编程
- SqlDataReader,SqlDataAdapter与SqlCommand的一点总结.