数组与广义表
5.1数组是由具有某种结构的数据元素构成,广义表则是由单个元素或子表构成的。因此数组和广义表中的数据元素可以是单个元素,也可以是一个具有线性结构的数据。从这个意义上讲,数组和广义表是线性表的推广。
“N维数组是数据元素为N-1维数组的线性表”
5.2.数组的顺序存储与实现:(1)按行序存储(2)按列序存储
5.3特殊矩阵的压缩存储
特殊矩阵:指具有许多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。
常见的特殊矩阵:对称矩阵、上(下)三角矩阵、对角矩阵
三对角矩阵:第一行和最后一行只有两个元素,其它都是三个元素;第一列和最后一列都是两个元素,其它列都是三个元素。
特殊矩阵的压缩原则:
(1)元素分布有特殊规律的矩阵,寻找规律对应的公式,实现压缩存储。
(2)非零元素很少的稀疏矩阵,可采用只存储非零元素的方法实现压缩存储。
稀疏矩阵:是指矩阵中大多数元素为零的矩阵
压缩存储策略:
(1)由于稀疏矩阵中非零元素的分布通常没有规律,因此,在存储非零元素值的同时,还必须存储该非零元素在矩阵中所处的行号和列号,相应的行和列与非零元素构成一个三元组(行标,列标,值),这就是稀疏矩阵的三元组表示法,稀疏矩阵压缩存储后便失去了随机存取性。优点:节约了空间,使得矩阵中某些运算的时间效率优于经典算法。
(2)为了避免大量移动元素,稀疏矩阵也可采用链式存储法---十字链表,它能够灵活地插入因运算而产生的新的非零元素,删除因运算而产生的新的零元素,实现矩阵的各种运算。
5.4:广义表的数据元素可以是单个元素,也可以是广义表。
广义表的定义是递归定义的
(1)广义表的元素可以是子表,而子表还可以是子表,因此,广义表就是一个多层的结构。如A=(a,(b,c))
(2)广义表可以被其他广义表共享,如:B=(A,A,D)通过该子表的名称就可以引用该表
(3)广义表具有递归性,如C=(a,C);

浙公网安备 33010602011771号