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

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 是以邻接表存储的图类型

 

         

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对任意给定的(顶点数不小于20,边数不少于30,的类型可以是有向图无向图、有向网、无向网),能够输入的顶点和边(或弧)的信息,并存储到相应存储结构(邻接矩阵、邻接表、十字链表、邻接多重表,任选其中两种类型),对自己所创建的完成以下操作: 对无向图求每个顶点的度,或对有向图求每个顶点的入度和出度(5分) 完成插入顶点和边(或弧)的功能(5分) 完成删除顶点和边(或弧)的功能(5分) 两种存储结构的转换(5分),如果其中一种存储结构为十字链表或邻接多重表则增加5分。 输出的深度优先遍历序列或广度优先遍历序列(5分) 求的深度优先或广度优先的生成树(或生成森林)(存储结构为孩子-兄弟链表),并对生成树进行遍历(15分) 判断的连通性,输出连通分量的个数(5分) 判断中是否存在环,无向图5分,有向图10分 给出顶点u和v,判断u到v是否存在路径(5分) 10、求顶点u到v的一条简单路径(10分) 11、求顶点u到v的所有简单路径(15分) 12、求顶点u到v的最短路径(10分) 13、求顶点u到其余各顶点的最短路径(15分) 14、求任两个顶点之间的最短路径(15分) 15、求最小生成树(15分) 16、对于有一个源点和一个汇点的有向网,求关键路径(20分) 编程环境可以是C、VC++、JAVA,每位同学从上述题目中选择100分的题目,注意,必须选择第1-6题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小达人Fighting

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

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

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

打赏作者

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

抵扣说明:

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

余额充值