- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章数组和广义表第5章数组和广义表
数据结构与应用 内容简介 教材目录 第5章 数组和广义表 3.三对角矩阵 设有一个n×n的方阵A,对于矩阵A中的任一元素aij,当|i-j|1时有aij=0(0≤i≤n-1,0≤j≤n-1),则称这样的矩阵为三对角矩阵。 三对角矩阵的压缩存储: 5.2.2稀疏矩阵 稀疏矩阵: 简单说,设矩阵Amn中有s个非零元素,若s远远小于矩阵元素的总数(即sm×n),则称A为稀疏矩阵。 令e=s/(m×n),称e为矩阵的稀疏因子。 当用数组存储稀疏矩阵中元素时,仅有少部分的空间被利用,造成空间的浪费,为节省存储空间,采用一种压缩的存储方法来表示稀疏矩阵的内容。 由于非零元素的分布一般是没有规律的,因此在存储非零元素的同时,还必须同时记下元素所在的行和列的位置(i,j)。 稀疏矩阵A中的一个非零元素可由一个三元组(i,j,aij)唯一确定。 1.稀疏矩阵的三元组表 假设非零元素的三元组是以按行序为主序顺序排列,一个稀疏矩阵就可转换成用一个对应的线性顺序表来表示,其中每个元素由一个上述的三元组构成,该线性表称为三元组表。 稀疏矩阵: A的三元组顺序表: 三元组顺序表类模板的定义: 教材cx5_2.h 2.十字链表 三元组表是用顺序方法来存储稀疏矩阵中的非零元素,当非零元素的位置或个数经常变化时,三元组表就不适合做稀疏矩阵的存储结构。例如,两矩阵做加操作时,会改变非零元素的个数,如用三元组表表示矩阵时,元素的插入和删除会导致大量的结点移动。此时,采用链式存储结构更为合适。 十字链表的结点结构: 5.3 广义表 5.3.1 广义表的逻辑结构 广义表(generalized list)简称表,它是线性表的推广。一个广义表LS定义为n(n≥0)个表元素a1,a2,…,an组成的有限序列。记作 LS=(a1,a2,…,an) 其中,LS为表名。ai(1≤i≤n)是表中元素,它或者是单个数据元素(称为原子),或者是广义表(称为子表)。n是表的长度,即表中元素的个数。表的长度不包括作为分界符的左括号“(”和右括号“)”和表元素之间的分隔符“,”。长度为0的表为空表。 如果n≥1,则称广义表的第一个表元素a1为广义表的表头,而由表中除a1外其他元素组成的表(a2,a3,…,an)称为广义表的表尾。 空表无表头表尾。 广义表示例: (1) A=() 这是一个空表,表的长度为0。它没有表头和表尾。 (2) B=(a,b) 这是一个只包括原子的表,称为线性表。表的长度为2。它的表头为a,表尾为(b);表尾还是一个表,其表头为b,表尾是空表()。 (3) C=(c,(d,e,f)) 这是一个长度为2的表,它的表头为c,表尾为((d,e,f));这个表尾仍然是表,其表头为(d,e,f),表尾为空表()。 (4) D=(B,C,A) 这是一个长度为3的表,它的3个表元素都是子表。其表头为B,表尾为(C,A)。 (5) E=(B,D) 这是一个长度为2的表,表元素都是子表。表头为B,表尾为(D)。 (6) F=(h,F) 这是一个长度为2的表,表头为h,表尾为(F);这个表尾还是表,其表头为F,表尾为空表(),对于表头来说,出现了递归。 广义表性质: 广义表有次序性 在广义表中,各表元素在表中以线性序列排列,每个表元素至多一个直接前驱,一个直接后继。这个次序不能交换。 广义表有长度 广义表中表元素个数一定,不能是无限的,可以是空表。 广义表有深度 广义表的表元素可以是原表的子表,子表的表元素还可以是子表,……, 广义表可递归 广义表本身可以是自己的子表,例如表F就是这种情况,一般称具有这种性质的表为递归表。 广义表可共享 广义表可以为其他广义表共享。例如,在E中,子表B被E和D所共享。把允许结点共享的表称为共享表或再入表。 2.广义表的基本操作 广义表的操作主要有求广义表的长度、深度、取表头和取表尾等。通过取表头和取表尾操作,可以按递归方法处理广义表,也可以实现一般的访问。 此外,在广义表上可以定义与线性表类似的一些操作,如插入、删除、遍历等。 5.3.2 广义表的存储结构 采用链接存储结构来存储广义表,结点结构如下: 广义表C的链式存储结构: 5.3.3 广义表基本操作的实现 1.建立广义表的链式存储结构 教材sf5_4.cpp 2.求广义表的长度 templatetypename T int GListT::GLLength() { int n=0; GLNodeT*g=head; g=g-val.sublist; while (g!=NULL) { n++; g=g-link; } return n; } 3.求广义表的深度
您可能关注的文档
最近下载
- 孝德与感恩(孝文化讲坛).pptx VIP
- 地下消防水池开挖专项施工方案.docx VIP
- 人工智能在小学数学个性化作业设计中的应用研究教学研究课题报告.docx
- 五上英语每日一练小纸条(含答案11页).pdf VIP
- Unit 3 Yummy food(Wrap up)外研版(三起)(2024)英语三年级下册.pptx VIP
- 近五年黑龙江省中考数学真题及答案2023.docx VIP
- 2022病毒疣基层诊疗指南.pdf VIP
- 大学物理化学第四版课程课件:第6章化学平衡.pptx VIP
- 中国体癣和股癣诊疗指南(基层实践版2022).docx VIP
- 张昕-行政组织学-第八章行政组织变革.pptx VIP
文档评论(0)