图的邻接表表示法.doc_第1页
图的邻接表表示法.doc_第2页
图的邻接表表示法.doc_第3页
图的邻接表表示法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图的邻接表表示法图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List)。1 邻接表的结点结构(1)表结点结构adjvexnext邻接表中每个表结点均有两个域: 邻接点域adjvex存放与vi相邻接的顶点vj的序号j。 链域next将邻接表的所有表结点链在一起。注意:若要表示边上的信息(如权值),则在表结点中还应增加一个数据域。(2)头结点结构vertexfirstedge 顶点vi邻接表的头结点包含两个域: 顶点域vertex存放顶点vi的信息 指针域firstedgevi的邻接表的头指针。注意: 为了便于随机访问任一顶点的邻接表,将所有头结点顺序存储在一个向量中就构成了图的邻接表表示。 有时希望增加对图的顶点数及边数等属性的描述,可将邻接表和这些属性放在一起来描述图的存储结构。2无向图的邻接表对于无向图,vi的邻接表中每个表结点都对应于与vi相关联的一条边。因此,将邻接表的表头向量称为顶点表。将无向图的邻接表称为边表。【例】对于无向图G5,其邻接表表示如下面所示,其中顶点v0的边表上三个表结点中的顶点序号分别为1、2和3,它们分别表示关联于v0的三条边(v0,v1),(v0,v2)和(v0,v3)。注意: n个顶点e条边的无向图的邻接表表示中有n个顶点表结点和2e个边表结点。3有向图的邻接表对于有向图,vi的邻接表中每个表结点都对应于以vi为始点射出的一条边。因此,将有向图的邻接表称为出边表。【例】有向图G6的邻接表表示如下面(a)图所示,其中顶点v1的邻接表上两个表结点中的顶点序号分别为0和4,它们分别表示从v1射出的两条边(简称为v1的出边):和。注意:n个顶点e条边的有向图,它的邻接表表示中有n个顶点表结点和e个边表结点。4有向图的逆邻接表在有向图中,为图中每个顶点vi建立一个入边表的方法称逆邻接表表示法。入边表中的每个表结点均对应一条以vi为终点(即射入vi)的边。【例】G6的逆邻表如上面(b)图所示,其中v0的人边表上两个表结点1和3分别表示射人v0的两条边(简称为v0的入边):和。注意:n个顶点e条边的有向图,它的邻接表表示中有n个顶点表结点和e个边表结点。5.邻接表的形式说明及其建表算法(1)邻接表的形式说明var head,next,point:array0.2001of longint; /*邻接表的表首顶点为head,后继指针为next,顶点序列为point */ p:longint; proc addedge(a,b:longint); /*(a,b)进入邻接表*/vart:longint; inc(p);pointpb; /*增加顶点b*/ if heada=0 /*(a,b)进入邻接表*/ then headap else theada; while nextt0 do tnextt; nexttp ;/*else*/;/* addedge */(2)邻接表的形式说明 const n=10; e=20; n为顶点数,e为边数type edge=edgenode; edgenode=record 边节点信息 adjvex:1.n; 边的终点(链接点) weight:integer;该边上的权,无权图可以省去 next:edge; 指向下一条边的链接 end; vex=record vertex:integer; firstedge:edge; end;var s:edge; g=array 1.n of vex;begin read(n,e); n为顶点数,e为边数 for i:=1 to n do begin read(gi. vertex); 读入顶点信息表 gi. firstedge:=nil; 表头指针初始化 end; for k:=1 to e do 建立邻接表 begin read(i,j,w); 读入一条边的起点、终点及权值 new(s); s. adjvex:=j; 新节点赋值 s.weight:=w; s.next:=gi.firstedge; gi.firstedge:=s; new(s); s. adjvex:=i; 新节点赋值 s.weight:=w; s.next:=gj.firstedge; gj.firstedge:=s; end;end.该算法的时间复杂度是O(n+e)。注意: 建立有向图的邻接表更简单,每当读入一个顶点对序号时,仅需生成一个邻接序号为j的边表结点,将其插入到vj 的出边表头部即可。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论