数据结构图型(Graph)结构

前言

数据结构图型(Graph)结构


一、图型(Graph)结构:

      什么是图型结构:由有穷且非空的顶点和顶点之间的边组成的集合
      通常表示:G(V,E)G表示一个图,V是图中顶点(元素)集合,E是图中边(元素之间的关系)的集合

      无向图:
          边用(A,B)方式表示,点与点之间是互通的
          在无向图中,任意两个顶点之间都有边,该图称为无向完全图,则含有n个顶点的无向完全图有 n*2(n-1)/2 条边
      有向图:
          边用 <A,B> 方式,仅表示从A点到B点有边,有向图中边也叫弧,A是弧尾,B是弧头    
          在有向图中,任意两个顶点之间都有方向相反的两个弧,这种图称为有向完全图,则含有n个顶点的有向完全图有 n*2(n-1) 条边

      注意:不讨论顶点到自身的边,而且也不讨论重复出现的边,这种图叫做简单图,数据结构只研究简单图

      点多边少的图叫做稀疏图,反之叫做稠密图,图中顶点到顶点之间的边如果带上数据,这些数据叫做边的权重,带权重的图称为带权图,也叫网

      依附于顶点的边的数量称为该顶点的度,有向图中度又分为出度(从该顶点出发的弧的数量)、入度(指向该顶点的弧的数量)

      路径:从顶点到另一个顶点经过的边叫做路径,边的数量叫做该路径的长度

      环:图中有某个顶点最后能通过边绕回到该点

      回路:专指有向图,从某点出发,最终又有弧能够回到该点,如果某点只有输出、没有输入时,该点一定没有回路

      注意:顶点序列中不重复出现的路径称为简单路径
      
      如果顶点V到顶点V1之间有路径,则称V和V1时连通的,如果图中任意两个顶点之间时连通的,称为连通图,如果一个图中有n个顶点,那么需要n-1条边才能够达到连通图,如果仅需要n-1条边的连通图也叫做生成树,如果再配上权重,代价最小的叫做最小生成树

      图的存储结构:
        邻接矩阵:用一个一维数组来存储n个顶点,用一个二维数组存储顶点之间的边
        char V[]={A,B,C,D,E,F};
           A  B  C  D  E  F
        A [0][1][1][0][0][0]
        B [1][0][0][1][0][0]
        C [1][0][0][1][0][1]
        D [0][1][1][0][1][1]
        E [0][0][0][1][0][0]
        F [0][0][1][1][0][0]

        二维数组中E[i][j]的值为1,则表示顶点V[i],到顶点V[j]有边
        注意:由于不存在自己到自己的边,左对角线上的值都是假
        如果存储的是无向图,则二维数组的值会沿左对角线对称,所以,如果不对称,则存储的一定不是无向图

        邻接矩阵的优点:方便计算顶点的入度和出度
                 缺点:如果图是稀疏图,会非常浪费存储空间

        图的遍历:
             图的深度优先遍历:类似于树的前、中、后序遍历
             图的广度优先遍历:类似于树的层序遍历

二、邻接表

边:
 顶点下标
 下一条边的地址
顶点:
 数据
 指向第一条边的地址
图:
 由顶点组成的数据
 顶点数量
优点:节约存储空间
缺点:计算入度麻烦
十字链表:
  专门用于存储有向图的一种方式
  边:
     弧尾下标
     弧头下标
     指向相同弧尾的下一条边
     指向相同弧头的下一条表
  顶点:
     数据
     指向第一条出度的边
     指向第一条入度的边
  图:
     由顶点组成的数组
     顶点数量

  优点:节约空间、方便查找出入度

邻接多重表:
  专门用于存储无向图的一种结构
  边:  
     i j两个相互依附于该边的顶点下标
     inext  指向下一条依附于i顶点的边
     jnext  指向下一条依附于j的顶点的边

  顶点:
     数据
     指向与顶点有关的一条边
    
  图:
     由顶点组成的数组
     顶点数据

总结

以上,有错误,还请指正

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值