- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 扩展线性表—— 数组与广义表;4.1 扩展线性表---数组*;4.1.2 数组的基本操作
;4.1.3 数组的存储结构
静态数组(定义数组)和动态数组(指针数组)
对于下界为0的一个一维数组a[n],给定第一个数组元素a0的存储地址是Loc(a0),每个数据元素所占的存储单元为k,则任意数据元素ai的存储单元地址:
Loc(ai)= Loc(a0) + i * k (0≤i<n)
二维数组推广到一般情况:设二维数组的行下标的取值范围为rl到ru,列下标取值范围为cl到cu。
以行序为主序的存储方式,则任意数据元素ai,j的存储单元地址:
Loc(ai,j)= Loc(arl,cl) + ((i – rl) * (cu – cl + 1) + (j – cu)) * k
以列序为主序的存储方式,则任意数据元素ai,j的存储单元地址:
Loc(ai,j)= Loc(arl,cl) + ((j – cl) * (ru - rl + 1) + (i – rl)) * k;4.1.4 矩阵的压缩存储
压缩存储是指为多个值相同的矩阵元素分配一个存储空间,值为0的矩阵元素不分配空间的存储方式。
把矩阵元素值相同的或者的0元素分布有一定规律的矩阵,则称之为特殊矩阵。
如果矩阵中的0元素占绝大部分,则称此类矩阵为稀疏矩阵。
;1.特殊矩阵
若n阶方阵A中的数据元素满足下列性质:
ai,j = aj,i (0 ≤ i,j < n)
则称矩阵A为n阶对称矩阵。
假设以一维数组SC[0~n(n+1)/2-1]来存储对阵矩阵A[n][n],则SC[k]与矩阵元素aij之间存在着一一对应关系:
k = i*(i+1)/2 + j 当i≥j
k = j*(j+1)/2 + i 当i=j
;2.稀疏矩阵的压缩存储
假设在n*m的矩阵中,有x个数据元素的值不为0,设
则称Γ为稀疏因子,如果某一矩阵的稀疏因子Γ≤ 0.05时,则称该矩阵为稀疏矩阵(Sparse Matrix)。
;4.2 扩展线性表---广义表*;四个重要结论:
(1)层次性。广义表中的元素是不“均匀”的(元素类型不同),是一个多层次的结构。右图表示的是广义表E,图中○表示广义表,□表示原子。其中○有几层,广义表的深度就为几层。
(2)共享性。如上例中,广义表A、B和C为广义表E的子表,那么,在广义表E中就不必列出子表的值,可以通过广义表的名称来引用。
(3)递归性。如上例中的广义表F可以得知,广义表可以是其本身的一个子表。
( 4)任何非空广义表的表头可以是原子,也可以???广义表,但其表尾必定是广义表。
;4.2.2 广义表的存储表示;算法4.2:广义表头尾链表存储表示方式的结点类
struct GenListNode { //广义表结点类定义
public:
GenListNode() : utype(0), tlink(NULL), info.ref(0) {} //构造函数
GenListNode(GenListNodeT RL) { //复制构造函数
utype = RL.utype; info = RL.info;
}
private:
int utype; //=0 / 1
union { //联合
T value; //utype=1,存放数值
struct{
GenListNodeT *hp;
GenListNodeT *tp;
}ptr;
} info;
};
;;在这种存储结构中有几种情况:
(1)除空表的头指针为空外,对任何非空列表,其头指针均指向广义表表结点,且该结点中的hp指向表头(或为原子结点,或为表结点),tp指向表尾(除非表尾为空,否则必为表结点);
(2)容易分清列表中原子和子表所在的层次。如在列表D中,原子a和e在同一层次上,而b、c和d在同一层次上且比a和e低一层,B和C是同一层次的子表;
(3)最高层的表结点个数为列表的长度。
以上三个特点在某种程度上给列表的操作带来了方便。
其主要缺点是:表结点过多,容易造成空间浪费。;2.广义表的扩展线性链表存储方式
在这种存储结构中,表结点由三个域组成:
(1)标志域utype
它用来标明该结点是什么类型的结点。=0,是广义表专用的附加头结点;=1,是原子结点(为简化讨论,不考虑原子结点数据的不同类型);=2,是子表结点。
(2)信息域info
不同类型的结点在这个域中存放的内容不同。当utype=0时,该信息域存放引用计数(ref);当utype=1时,该信息域存放元素数据值(value);当utype=2时,该信息
您可能关注的文档
- 第14篇《三峡》中考复习总结课件.ppt
- 第16章《平行四边形认识》易错题集(01):16.1+平行四边形性质.doc
- 第12课--宋元时期都市及文化.pptx
- 第八课科学技术成就.ppt
- 第十七章《三角形复习总结课》-2.ppt
- 第十一章-功及机械能150道-选择题一.doc
- 第十三章--实现祖国完全统一构想.ppt
- 高职类数学应用题.doc
- 高中地理必修二城市化过程和特点.pptx
- 高中地理必修教材综合测考试试题带答案.doc
- 2023冀教版数学四年级下册第六单元试卷及部分答案(三套).pdf
- 2022年一般从业人员(全员培训)《危险化学品企业从业人员》安全生产模拟.pdf
- 2021-2022学年深圳实验学校高一上学期第二阶段考试数学试题含答案.pdf
- 2019贵州诚信答题题库(1).pdf
- 2020年初中二年级信息技术浙教版课前预习题及解析581.pdf
- 2023-2024学年高中语文北师大版必修二第一单元单元测试(含答案解析.pdf
- 2023年七年级下册道德与法治期末考前复习卷含答案.pdf
- 2023宿迁市沭阳县事业单位考试试题真题及答案2.pdf
- 2023年-2024年法律职业资格之法律职业主观题考前冲刺试卷B卷含答案.pdf
- 2023年深圳市事业单位统考真题及答案.pdf
文档评论(0)