zoukankan      html  css  js  c++  java
  • 有向图的邻接表表示法

    图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List)。

    1. 邻接表的结点结构


    (1)表结点结构
        
    ┌────┬───┐ 
        
    │adjvex  │next  │
        └────┴───┘
         邻接表中每个表结点均有两个域:
     ① 邻接点域adjvex
      存放与vi相邻接的顶点vj的序号j。
     ② 链域next
      将邻接表的所有表结点链在一起。
      注意:
         若要表示边上的信息(如权值),则在表结点中还应增加一个数据域。

    (2)头结点结构
        
    ┌────┬─────┐ 
        
    │vertex  │firstedge │
        └────┴─────┘
         顶点vi邻接表的头结点包含两个域:
     ① 顶点域vertex
      存放顶点vi的信息
     ② 指针域firstedge
      vi的邻接表的头指针。
      注意:
         ① 为了便于随机访问任一顶点的邻接表,将所有头结点顺序存储在一个向量中就构成了图的邻接表表示。
         ② 有时希望增加对图的顶点数及边数等属性的描述,可将邻接表和这些属性放在一起来描述图的存储结构。

    2.代码实例

     

    输出结果为:

     

    3.代码实例2(ps:补充于2011-6-14)

          总体而言,邻接表表示法中主要含有两种结点,分别是头结点和表结点(也叫做边结点),在头结点(s)到表结点(d)之间存在着一条边。如果头结点后面有多个表结点,即s->d1->d2,则表示存在着两条边,分别是e(s,d1)和e(s,d2)。邻接表表示法中,头结点的数量是固定的,就是图中的顶点数量V,表结点的数量由边的数量来决定。如果是有向图,表结点的数量=边的数量;如果是无向图,则表结点的数量=边的数量*2。

          在构造图的时候,如果一个头结点后面有多个表结点,那么表结点按次序添加在头结点后面。比如原先有结构s->d1->d2,现在需要添加表结点d3,那么需要打断s->d1的指针,让d3指向d1,s指向d3。即s->d3->d1->d2。

     

    作者:xwdreamer
    欢迎任何形式的转载,但请务必注明出处。
    分享到:
  • 相关阅读:
    树莓派3下开启SSH服务
    没有显示器连接树莓派
    没有屏幕和键盘如何玩转树莓派
    无显示器通过网线连接笔记本电脑玩转树莓派
    解决某些软件无法在虚拟机中运行的方法
    sql注入-基于布尔型的盲注入门
    前台数据传到后台,日期类型序列化后与前台传过来的数据不一致
    layui修改表格行高
    jQuery动态回到顶部
    禁止选中页面内容
  • 原文地址:https://www.cnblogs.com/xwdreamer/p/2297028.html
Copyright © 2011-2022 走看看