欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数据结构 课件ch07 1图1图的定义和存储.ppt

    • 资源ID:2157287       资源大小:645.50KB        全文页数:21页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构 课件ch07 1图1图的定义和存储.ppt

    第7章 图,数据结构讲义,-图的定义和存储,信息工程学院魏洪涛Email:,图的定义:,图G是由顶点集V和顶点间的关系集合E(边的集合)组成的一种数据结构,可以用二元组定义为:G=(V,E)。,例如,对于图7-1所示的无向图G1和有向图G2,它们的数据结构可以描述为:G1=(V1,E1),其中 V1=a,b,c,d,E1=(a,b),(a,c),(a,d),(b,d),(c,d),而G2=(V2,E2),其中V2=1,2,3,E2=,。,7.1 图的基本概念,7.2 图的存贮结构,图无法以数据元素在存储区中的物理位置来表示元素之间关系,即图没有顺序映象的存储结构。用多重链表表示图,即以一个数据域和多个指针域组成的结点表示图中一个顶点,其中数据域存储该顶点的信息,指针域存储指向其邻接点的指针。常用的有邻接矩阵、邻接表和十字链表等。不管哪一种方式,它除了要存储图中各个顶点本身的信息外,同时还要存储顶点与顶点之间的所有关系(边的信息)。,多重链表,1 图的邻接矩阵表示,在邻接矩阵表示中,除了存放顶点本身信息外,还用一个矩阵表示各个顶点之间的关系。若(i,j)E(G)或i,jE(G),则矩阵中第i行 第j列元素值为1,否则为0。,7.2.1 邻接矩阵,例如,对图7-8所示的无向图和有向图的邻接矩阵。,2 从无向图的邻接矩阵可以得出如下结论,(1)矩阵是对称的,可压缩存储(上(下)三角);(2)第i行或第i 列中1的个数为顶点i 的度;(3)矩阵中1的个数的一半为图中边的数目;(4)很容易判断顶点i 和顶点j之间是否有边相连(看矩阵中i行j列值是否为1)。,3 从有向图的邻接矩阵可以得出如下结论,(1)矩阵不一定是对称的;(2)第i 行中1的个数为顶点i 的出度;(3)第i列中1的个数为顶点 i的入度;(4)矩阵中1的个数为图中弧的数目;(5)很容易判断顶点i 和顶点j 是否有弧相连.,4网的邻接矩阵表示,类似地可以定义网的邻接矩阵为:wij 若(i,j)E(G)或i,jE(G)Aij=其它情形网及网的邻接矩阵见下图。,邻接矩阵法优点:容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边(弧)、找顶点的邻接点等等。邻接矩阵法缺点:n个顶点需要n*n个单元存储边(弧);空间效率为O(n2)。对稀疏图而言尤其浪费空间。,1图的邻接表表示,图的邻接表存储方法是一种顺序分配与链式分配相结合的存储方法,它包括两部分:一部分是单链表,用来存放边的信息;另一部分是数组,主要用来存放顶点本身的数据信息。,边结点,顶点结点,7.2.2 邻接表,左图所示的无向图G3和有向图G4的邻接表见右图所示:,2 从无向图的邻接表可以得到如下结论,(1)第i 个链表中结点数目为顶点i的度;(2)所有链表中结点数目的一半为图中边数;(3)占用的存储单元数目为n+2e。,3 从有向图的邻接表可以得到如下结论,(1)第i 个链表中结点数目为顶点i的出度;(2)所有链表中结点数目为图中弧数;(3)占用的存储单元数目为n+e。,从有向图的邻接表可知,不能求出顶点的入度。为此,我们必须另外建立有向图的逆邻接表,以便求出每一个顶点的入度。,例:已知某网的邻接(出边)表,请画出该网络。,80,64,1,2,5,当邻接表的存储结构形成后,图便唯一确定!,如果是无向图,只要搜索任意一个结点的边表。有向图要搜索两个结点的边表。,邻接表的优点:空间效率高;容易寻找顶点的邻接点;邻接表的缺点:判断两顶点间是否有边或弧,需搜索两结点对应的单链表,没有邻接矩阵方便。,4 图的邻接表数据类型描述,图的邻接表数据类型描述如下:#define MAXN 50/*MAXN表示图中最大顶点数*/typedef struct e_node/定义边结点的结构 int adjvex;int weight;/边的信息 struct e_node*next;E_NODE;/指向邻接点的指针typedef struct v_node/定义邻接表的表头类型 int vertex;/顶点信息 E_NODE*link;/指向“边表”的指针V_NODE;V_NODE headMAXN;,讨论:邻接表与邻接矩阵有什么异同之处?,1.联系:邻接表中每个链表对应于邻接矩阵中的一行,链表中结点个数等于一行中非零元素的个数。2.区别:对于任一确定的无向图,邻接矩阵是唯一的(行列号与顶点编号一致),但邻接表不唯一(链接次序与顶点编号无关)。邻接矩阵的空间复杂度为O(n2),而邻接表的空间复杂度为O(n+e)。3.用途:邻接矩阵多用于稠密图的存储(e接近n(n-1)/2);而邻接表多用于稀疏图的存储(en2),有向图的十字链表表示法,弧结点:typedef struct arcnode int tailvex,headvex;/弧尾、弧头在表头数组中位置 struct arcnode*hlink;/指向弧头相同的下一条弧 struct arcnode*tlink;/指向弧尾相同的下一条弧AD;,顶点结点:typedef struct dnode int data;/存与顶点有关信息 struct arcnode*firstin;/指向以该顶点为弧头的第一个弧结点 struct arcnode*firstout;/指向以该顶点为弧尾的第一个弧结点DD;DD gM;/g0不用,无向图的邻接多重表表示法,顶点结点:typedef struct dnode int data;/存与顶点有关的信息 struct node*firstedge;/指向第一条依附于该顶点的边DD;DD gaM;/ga0不用,边结点:typedef struct node int mark;/标志域 int ivex,jvex;/该边依附的两个顶点在表头数组中位置 struct node*ilink,*jlink;/分别指向依附于ivex和jvex的下一条边JD;,作业,已知如图所示的有向图,请给出该图的:(1)每个顶点的入/出度;(2)邻接矩阵;(3)邻接表;(4)逆邻接表;(5)十字链表.,

    注意事项

    本文(数据结构 课件ch07 1图1图的定义和存储.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开