数据结构与算法(C++版)课件第四章多维数组和广义表.pptx
《数据结构与算法(C++版)课件第四章多维数组和广义表.pptx》由会员分享,可在线阅读,更多相关《数据结构与算法(C++版)课件第四章多维数组和广义表.pptx(47页珍藏版)》请在汇文网上搜索。
1、第四章-多维数组与广义表数据结构与算法(C语言版)线性结构非线性结构前几章介绍的数据结构都是线性结构,数据元素都属于原子类型,其值不分解使用。本章讨论的多维数组和广义表是线性结构的推广,从整体上看它们是多个元素组成的线性表,而从局部上看线性表中的数据元素不一定是原子类型,即数据元素又可以具有某种数据结构。学习导引41 多维数组42 矩阵的压缩存储421 特殊矩阵422 稀疏矩阵43 广义表431 广义表的定义432 广义表的运算l理解二维数组的逻辑结构特征,掌握二维数组的顺序存储地址公式。l理解特殊矩阵的压缩存储方式,掌握根据下标计算存储地址的方法。l了解稀疏矩阵的表示及存储方法。l理解广义表
2、的定义、分类及运算。3主要内容目标一、多维数组的定义及存储1.多维数组的逻辑结构特征?数组中的元素具有相同类型,且下标一般具有固定的上界和下界。数组可以是一维的,也可以是多维的。下面以二维数组为例来分析。二维数组可以看成是由多个一维数组组成的。二维数组Amn既可看成由m个行向量组成的线性表,也可看成是由n个列向量组成的线性表。二维数组的逻辑结构具有如下特征:a00为开始结点,它没有直接前趋;am-1,n-1为终端结点,它没有直接后继;结点a0,n-1和am-1,0都有一个直接前趋和一个直接后继;除以上四个结点外,第一行和第一列的元素都有一个直接前趋和两个直接后继,最后一行和最后一列的元素都有两
3、个直接前趋和一个直接后继;其余的非边界元素aij同时处于第i+1行的行向量中和第j+1列的列向量中,都有两个直接前趋和两个直接后继。2.多维数组的存储以二维数组为例:二维数组一般采用顺序存储,因为元素个数固定,不插入删除。思考问题?如何让非线性的二维数组保存在线性的内存中?数据的排列原则方法:(1)先排列成线性序列;(2)再依次存放到内存中。排列方法:行优先和列优先 (1)行优先原则:一行一行排列。(2)列优先原则:一列一列排列。问题:C语言的数组属于哪种排列?行优先存储二维数组若二维数组Amn按行优先原则排列,其线性序列为:a00,a01,a0,n-1,a10,a11,a1,n-1,am-1
4、,n-1存储后的内存状态如图所示:aij的地址为:LOC(aij)=LOC(a00)+(in+j)d 特点:随机存取。列优先存储二维数组若二维数组Amn按列优先原则排列,则线性序列为:a00,a10,am-1,0,a01,a11,am-1,1,am-1,n-1存储后的内存状态如图所示:aij的地址为:LOC(aij)=LOC(a00)+(jm+i)d 二维数组的推广二维数组的逻辑特征可以推广到多维数组。三维数组中元素最多有三个前趋、三个后继二维数组的存储方法可以推广到多维数组。行优先或列优先排列,然后依次存储。二、矩阵的压缩存储工程中的矩阵(二维数组)往往阶数较大;而有效数据(非零元素)很少;
5、且分布没有规律;直接存储浪费大压缩存储。压缩存储方法压缩方法:只存储非零元素,对零元素不分配空间;为多个相同的非零元素分配一个存储空间。分别讨论特殊矩阵和稀疏矩阵的压缩存储。1.特殊矩阵特殊矩阵是指非零元素或零元素分布有一定规律的矩阵,可以根据规律来压缩存储。(1)对称矩阵(重点*)(2)三角矩阵(上三角阵和下三角阵)(3)对角矩阵不同的特殊矩阵中元素的分布规律不同,压缩存储的方法也不同。(1)对称矩阵满足aij=aji(1i,jn)的n阶方阵称为对称矩阵。压缩存储方法:对称矩阵中的数据元素按主对角线对称,只需存储下三角或上三角中的元素即可(重复元素只分配一个单元)。对称矩阵对于上三角或下三角
6、中的元素可按行优先或列优先存储。由此可得四种存储方法:行优先顺序存储下三角 列优先顺序存储下三角 行优先顺序存储上三角 列优先顺序存储上三角。aij可以通过公式计算出来:随机存取。重点:地址公式的推导。(1)行优先顺序存储下三角 (a)n阶对称矩阵 (b)行优先顺序存储下三角(c)对应的一维数组思考?(1)数组的大小?:n(n+1)/2(2)对应关系是什么?元素aij 存储在sa数组中的哪里?(3)下标k与i、j之间的关系:k=i(i+1)/2+j(4)上三角的aij怎么处理?答:上三角与下三角对应,例如a58=a85,若求上三角元素的值,那么将下标交换求地址。其他三种方法的下标计算公式(学会
7、推导)(2)列优先顺序存储下三角(3)行优先顺序存储上三角(4)列优先顺序存储上三角 (2)三角矩阵包括上三角阵和下三角阵两种。上三角阵的主对角线以下(不包括对角线)元素均为常数C,通常为0。图中为上三角阵。如何压缩存储?跟对称阵有什么区别与联系?三角矩阵压缩方法:相同元素只分配一个存储单元。上三角矩阵压缩存储:上三角没规律,依次存储,行优先或列优先。常数C=0,不分配空间;C0分配一个单元。则若C0,图中的上三角阵定义一个长度n(n+1)/2+1的数组,最后一个单元存储常数C。上三角矩阵地址公式 若上三角阵以行优先顺序存储,则地址公式为:若上三角阵以列优先顺序存储,地址公式会推导。下三角阵的
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载共享资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法C+版课件第四章 多维数组和广义表 数据结构 算法 C+ 课件 第四 多维 数组 广义
