您的位置:首页 > 其它

第五章:多维数组和广义表

2010-12-14 21:17 316 查看
前面我们讨论的的线性表、栈、队列和串都是线性表的数据结构,他们的逻辑结构特征是:每个数据元素之多有一个直接前趋和直接后继。对于多维数组和广义表是一种复杂的非线性结构,它们的逻辑特征是:一个元素可能有多个直接前趋和多个直接后继。

二维数组Am*n的含义是:该数组有m行(0~m-1第一维),有n列(0~n-1,第二维),占用m*n个存储空间。假设每个数据元素占用L个存储单元(可理解为字节),则二维数组A中任意一个元素aij的存储位置为:

行优先:LOC(i,j) = LOC(0,0) + (n×i+j)×L
列优先:LOC(i,j) = LOC(0,0) + (m×j+i)×L

特殊矩阵:是指非零元素或零元素的分布有一定规律的矩阵。

稀疏矩阵:设矩阵Amn中有s个非零元素,若s远远小于矩阵元素的总数(即s《m*n)。

在存储稀疏矩阵式,为了节省存储单元,很自然的压缩存储方法是指存储非零元素,但由于非零元素的分布一般是没有规律的,因此在存储非零元素的同时,还必须存储是适当的辅助信息,才能迅速确定一个非零元素是矩阵中的哪一个元素。 最简单的方法是:将非零元素的值和它所在的行号、列号作为一个结点存放在一起,于是矩阵中的每一个非零元素就有一个三元组(i,j,Aij)唯一确定。 显然,稀疏矩阵的压缩存储方法会失去随机存取方法。

当用三元组来表示非零元素时,对稀疏矩阵进行压缩存储有两种方法:顺序存储和链式存储。

广义表:有称 列表,是线性表的推广,是n(n>=0)个元素a1,a2...an的有限序列,其中国Ai或者是原子或者是一个表。通常记作:LS=(A1,A2...An).LS是广义表的名字,n为它的长度。

为了区分原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。若广义表LS非空,则a1是LS的表头,其余元素组成的表称为LS的表尾。

E=()---E是一个空表,其长度为0。

L=(a,b)---L是长度为2的广义表,它的两个元素都是原子,因此它们线性表。

A=(x,L)=(x,(a,b))----A是长度为2的广义表,第一个元素是原子x,第二个元素是子表L。

+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: