忿忿的泥巴坨 发表于 2024-7-29 17:29:04

3.2、数据结构-数组、矩阵和广义表

https://i-blog.csdnimg.cn/direct/0594dbb30e604819a7271d9c5c1f5586.png
数组结构

数组是定长线性表在维度上的扩展,即线性表中的元素又是一个线性表。N维数组是一种“同构”的数据结构,其每个数据元素类型相同、结构划一。
一个m行n列的数组体现如下:
https://i-blog.csdnimg.cn/direct/eaeb17b01d4f474f85808b0087b6f433.png
其可以体现为行向量形式(一行一行的数据)大概列向量形式(一列一列的数据)线性表,单个关系最多只有一个前驱(入度)和一个后继(出度),本质还是线性的。
数组结构的特点:数据元素数目固定;数据元素类型相同;数据元素的下标关系具有上下界的束缚且下标有序。
数组数据元素固定,一样平常不做插入和删除运算,得当于接纳顺序结构。因为插入元素后,背面的元素都要移动,比较耗时。但是得当查找
存储地址计算

数组存储地址的计算,特殊是二维数组,要注意理解,假设每个数组元素占用存储长度为len,起始地址为a,存储地址计算如下:
数组类型存储地址计算一维数组aa的存储地址为:a + i * len二维数组aa的存储地址(按行存储)为:a + (i * n+j) * len
a的存储地址(按列存储)为:a + (j * m+i) * len 一维数组

arr数组中,arr=0x00,求arr的地址
https://i-blog.csdnimg.cn/direct/1874c286d67743a4a5a429a5462e5c4a.png
在c语言中arr这种引用类型就是数组首元素的地址,int整形占4个字节,所以arr的存储地址就是0x1000+2 * 4 = 0x1008
二维数组

arr的二维数组,arr=0x1000,求arr的地址
https://i-blog.csdnimg.cn/direct/30f9e561386048f590522aab8451f2ab.png
按行存储:0x1000 + (1*5+2)4 =
按列存储:0x1000 + (24+1)*4 =
练习题

例:对于二维数组a中的一个元素a(1≤=i,j <= N),存储在a之前的元素个数
A.与按行存储或按列存储方式无关
B.在i=j时与按行存储或按列存储方式无关
C.在按行存储方式下比按列存储方式下要多
D.在按行存储方式下比按列存储方式下要少
   答案:B
矩阵

矩阵着实就是特殊的二维数组。


[*]特殊矩阵:矩阵中的元素(或非0元素)的分布有一定的规律。常见的特殊矩阵有对称矩阵、三角矩阵和对角矩阵。
https://i-blog.csdnimg.cn/direct/13e46f9bbcdf4cee9c1e1f5b36c4e203.png
[*]稀疏矩阵:在一个矩阵中,若非零元素的个数远远少于零元素个数,且非零元素的分布没有规律。
存储方式为三元组结构,即存储每个非零元素的(行,列,值)。
练习题

【2019年】某阶的三对角矩阵A如下图所示,按行将元素存储在一维数组M中,设a1,1存储在M,那么ai,j(1<=i, j<=n且ai,j位于三条对角线中)存储在M([])。
https://i-blog.csdnimg.cn/direct/39c7ae603c3b48e3a238e16836a15787.png
A、i+2j
B、2i+j
C、i+2j-2
D、2i+j-2
   答案D
可以取特殊值。a1,1=M,将i=1,j=1带入到选择项的表达式中,看哪个=1。C和D的表达式是1。按行存储,a1,2=M。将i=1,j=2带入C和D的表达式,只有D的表达式值=2
广义表

没有考过,相识即可
广义表是线性表的推广,是由0个或多个单位素或子表组成的有限序列。
平常的线性表:(10,20,30,40)
广义表:(10,(21,22),30,(41,42)) 有点像不规则的二维数组
广义表与线性表的区别:线性表的元素都是结构上不可分的单位素,而广义表的元素既可以单位素,也可以是有结构的表。
广义表一样平常记为:LS =(α1,α2,…,αn)
其中LS是表名,αi是表元素,它可以是表(称为子表),也可以是数据元素(称为原子)。其中是广义表的长度(也就是最外层包罗的元素个数),=0的广义表为空表;而递归界说的重数就是广义表的深度,即界说中所含括号的重数(单边括号的个数,原子的深度为0,空表的深度为1)。
head()取表头(广义表第一个表元素,可以是子表也可以是单位素)和tail()取表尾(广义表中除了第一个表元素之外的其他所有表元素构成的表,非空广义表的表尾必定是一个表,即使表尾是单位素)操作。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 3.2、数据结构-数组、矩阵和广义表