数据结构_数组和广义表

数组和广义表

数组

n维数组是线性表的推广,每一行可以看成一个行向量形式线性表,每一列看成一个列向量形式线性表

顺序存储结构;以列序为主序存储/以行序为主序存储

矩阵压缩存储

多个值相同的元素只分配一个存储空间,对0元素不分配存储空间

特殊矩阵:具有许多相同的矩阵元素或者0元素,并且这些相同矩阵元素或者零元素分布具有一定规律性的矩阵

​ 对称矩阵、上(下)三角矩阵、对角矩阵

特殊矩阵压缩存储方法:找出特殊矩阵中值相同的矩阵元素,把那些相同分布、值相同的矩阵元素压缩到一个存储空间

稀疏矩阵:矩阵中非0元素个数相对于矩阵元素来说非常少

​ 存储方式:非零元素以及相应的行和列构成一个三元组(行标,列标,值)

广义表

列表,元素a1,a2,a3……an的有限序列,其中每一个ai或者是原子,或者是一个子表

表头:若LS非空(n>=1),则其第一个元素a1就是表头

表尾:除表头之外的其他元素组成。记作tail(LS)=(a2,……an)

(())长度为1,表头表尾均为()

(a,(b,c))长度为2,由原子a和子表(b,c)构成。表头为a,表尾为((b,c))

广义表长度:为最外层所包含元素的个数

广义表深度:该广义表展开后所含括号数

原子深度为0,空表深度为1

取表头运算GetHead 取表尾运算GetTail

GetHead(LS)=a1 GetTail(LS)=(a2,……an)

广义表是线性表的推广,线性表是广义表的特例

例题【重要】

A=() 列表A是空表,长度为0

B=(e) 列表B只有一个原子e,B的长度为1

C=(a,(b,c,d)) 列表C的长度为2,两个元素分别为原子a和子表(b,c,d)

D=(A,B,C) 列表D的长度为3,3个元素都是列表,将子表的值代入后,D=((),(e),(a,(b,c,d)))

E=(a,E) 递归的表,长度为2,E相当于一个无限的列表E=(a,(a,(a……)))

GetHead(B)=e GetTail(B)=()

GetHead(D)=A GetTail(D)=(B,C)——>再次分解GetHead((B,C))=B GetTail((B,C))=C

重要结论

(1)列表的元素可以是子表,子表的元素还可以是子表……列表是一个多层次结构

(2)列表可以为其他列表所共享,如D中不必列出子表的值,而是通过子表名称引用

(3)列表是一个递归的表,列表可以是其本身的一个子表,如E

注:列表()和(())不同,前者为空表,长度n=0;后者长度n=1,可分解得到表头,表尾均为空表()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值