广义表head tail 运算_专业课笔记 5 数组和广义表

计算对应元素位置

将矩阵的上三角保存到一维数组中,则原本个元素的矩阵可以压缩到 n*(n+1)/2,则 i,j 对应一维数组中的规律是等差数列的前 i 项和+j 的规律,注意数组和矩阵起始的位置

例如,下三角以行序或者上三角以列序为主序放在一维数组 M[0, (n+1)/2-1]中,最左上角为对应数组中的第 k 个,则 i,j 位置对应一维数组的关系为,i * ( i + 1 ) / 2 + j + k,如果从 1,1 开始取值的话,就是 i - 1 和 j - 1 了

稀疏矩阵

按照压缩存储的概念,只存储稀疏矩阵的非 0 元,故存储节点的同时要记录下所在行列的位置,即三元组

三元组即用()包住行列的下标和值,顺序存储表示就是则 3 列的表

也可用十字链表存储

广义表

长度和深度

长度是最上层元素的个数,即广义表元素的个数(注意原子元素和表元素区别),深度是括号的最大层数

递归的广义表「深度」为无穷大

head 和 tail 操作取出原子

非空时,第一个元素为表头,即 head 操作取出的原子,「其余的组成的表」是表尾

可以理解为,head 去括号(只留第一个元素),tail 去第一个元素,也就是说,要想取出原子,则最后的操作必定为 head

头尾链表存储结构,计算深度长度

(14)广义表 A = (a, ( (b, c) , d ))

bb48bf3142f09915789410c50cc83651.png
头尾链表存储结构

长度为 2,深度为 3

(16)给出广义表的表头表尾分析法,确定广义表和深度长度

d3ac476865f02fdf616a7db7df620858.png
广义表结构转化

这里花少了个 d

广义表为(a, ( (b, c ), (d) ), (), ()),长度为 4,深度为 3

(17)给出广义表的表头表尾分析法,确定广义表和深度长度

da93b06de56f8cf069315a669e8142d8.png
广义表

广义表( (a), ( ( b, c), d)) 长度为 2 深度为 3

广义表的共享结构图形

e486945111aac1ec14220e58d65e05e7.png
共享结构图形

算法要求

算法名称对于书上位置算法编号真题
「三元组矩阵转置」995.115
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值