图的存储及基本操作 ---- 邻接多重表【无向图的一种链式存储结构】

本文详细介绍了无向图的一种链式存储结构——邻接多重表,包括其结构特点、结点组成及存储示例。邻接多重表提高了边信息的查找和操作效率,适用于需要频繁进行边操作的场景。

1、

   》》 邻接多重表是无向图的另一种链式存储结构。

   》》  在邻接表中,容易求得顶点和边的各种信息,但在邻接表中求两个顶点之间是否存在边,或者

          需要对边执行删除等操作时,需要分别在两个顶点的边表中遍历,效率较低。

   》》 在邻接多重表中,每一条边用一个结点表示,其结构如下图:

          

          说明1:  边的结点

               a.  mark : 标志域,可以用以标记该条边是否被搜索过

               b.  ivex 和 jvex : 表示该边依附的两个顶点在图中的位置

               c.  ilink : 指向下一个依附于顶点 ivex 的边

               d.  jlink : 指向下一个依附于顶点 jvex 的边

               e.  info : 指向和边相关的各种信息的指针域

 

            

            说明2: 顶点的结点

                a. data :存储该顶点的相关信息 

      b. firstedgc : 指示第一条依附于该顶点的边

            补充1:在邻接多重表中,所有依附于同一个顶点的边串联在同一个链表中,由于每条边

                  依附于两个顶点,则每个边结点同时链接在两个链表中。

   》》 无向图的邻接多重表表示法示例:

             

    》》 图的邻接多重表存储结构定义如下:

      

#define MaxVertexNum 100                        // 图中顶点数目的最大值
typedef struct ArcNode{                         // 边表结点
    boolean mark ;                              //  访问标记
    int ivex , jvex ;                           // 分别指向该弧的两个结点
    struct ArcNode *ilink , *jlink ;            // 分别指向两个顶点的下一条边
    // InfoType info ;                          // 相关信息指针
}ArcNode;

typedef struct VNode{                           // 顶点表结点
   VertexType data;                             // 顶点信息
   ArcNode *firstedge;                          // 指向第一条依附于该顶点的边
}VNode;

typedef struct{
   VNode adjmulist[MaxVertexNum];               // 邻接表
   int vexnum , arcnum;                         // 图的顶点数和弧数
}AMLGraph;                                      // AMLGraph 是以邻接表存储的图类型

 

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值