数据结构---数组、压缩矩阵、广义表

二维数组中某一元素存储位置的计算:

设一个二维数组 A[M][N] ,其中每个元素占K个字节,第一个元素为A[0][0],它的地址为LOC[A[0][0]],求元素Aij的存储位置

按行优先存储:LOC{Aij}=[A[0][0]]+(N*i+j)*K

按列优先存储:LOC{Aij}=[A[0][0]]+(M*j+i)*K

例题:

若起始元素是A11,则公式为:

若起始元素是A01,则公式为:

按行优先存储:LOC{Aij}=[A[0][0]]+(N*i+ j-1 )*K

按列优先存储:LOC{Aij}=[A[0][0]]+(M*(j-1) +i)*K

特殊矩阵的压缩存储:

对称矩阵

将下图对称矩阵压缩到一维数组里,元素新的下标设为k

 i>=j为下三角 部分,i<j为上三角部分???

下三角矩阵

对角矩阵

稀疏矩阵

 

广义表 :

广义表记为:lLS   (a1, …,ai,…, an )

相关解释:

1.广义表又称列表,是线性表的推广

2.广义表中的元素既可以是原子类型,也可以是列表

3.常用小写字母表示原子类型,用大写字母表示广义表,如:B=(b,c,d)、A=(a,B)

相关术语:

1.长度:为广义表中元素个数n,n=0时为空表

如:(a,(a,b),d,e,((i,j),k) )其长度为 5(最大括号中逗号数+1)

2.表头:广义表中的第一个数据元素

3.表尾:在广义表中,除表头外,剩余元素构成的广义表称为其表尾

4.深度:广义表中括号嵌套的最深层次

如: (a,(a,b),d,e,((i,j ) ,k ) ) 深度为3

特点:

1.广义表是多层次的结构(元素可以是子表,而子表的元素还可以是子表)

2.广义表可被其他子表共享

3.广义表可以是递归的表,即它可以是自身的表,如E=(a,E)

求表头、表尾:

GetHead() [表中第一个元素]

GetTail()   [除第一个元素外剩余的元素组成的广义表]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值