图型(Graph)结构

图型(Graph)结构:

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

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

注意:不存在顶点到自身的边,并且两个顶点之间不存在重复的边,这种图叫做
简单图,数据结构中只研究简单图

稀疏图:图中点多边少的图
稠密图:图中边多点少的图
图中的点与点之间的边带数据,这些数据称为权重,该图称为带权图,也称为网 

依附于某顶点的边的数量称为该顶点的度,如果是有向图,分为出度(从顶点出发的
弧的数量)、入度(到该顶点弧的数量)    

路径:顶点到顶点之间经过的边称为路径,边的数量称为路径的长度
顶点序列中不重复出现的路径称为简单路径

如果顶点V1到顶点V2之间有路径,则V1和V2是连通的,如果图中的任意顶点之间都
是连通的,则称为连通图,如果一个图中有n个顶点,那么至少需要n-1条边才能达
到连通图

图的存储结构:

邻接矩阵:
    用一个一维数组V来存储n个顶点,用一个n*n的二维数组E来存储边
    char V[n] = {A,B,C,D,E,F,G};
        A  B  C  D  E  F  G
    A  [0][1][1][0][0][0][0]
    B  [0][0][0][1][0][0][0]
    C  [0][0][0][1][0][1][0]
    D  [0][0][0][0][1][0][0]
    E  [0][0][0][0][0][0][1]
    F  [0][0][0][0][0][0][0]
    G  [0][0][0][0][0][1][0]
    
    在二维数组中E[i][j]的值为1,则表示顶点V[i],到顶点V[j]之间有边
    注意:由于不存在自己到自己的边,左对角线上的值为假

    邻接矩阵的优点:可以方便计算出顶点的出入度数
            缺点: 当图是稀疏图时,会非常地浪费存储内存
邻接表:
    边:
        指向顶点的下标
        下一条边的地址
    顶点:
        数据
        第一条边的地址
    图:
        由顶点组成的数组
        顶点数量
    优点:计算出度很方便,可以大大地节约空间
    缺点:计算入度麻烦
十字链表:
    边:
        弧尾下标
        弧头下标
        指向相同弧尾的下一条边
        指向相同弧头的下一条边
    顶点:
        数据
        指向第一条出度的边
        指向第一条入度的边
    图:
        由顶点组成的数组
        顶点数量
邻接多重表:
    是一种专门存储无向图的一种结构
    边:
        i、j两个互相依附于该边的顶点下标
        inext 指向下一条依附于i顶点的边
        jnext 指向下一条依附于j顶点的边
    顶点:
        数据
        指向与顶点有关系的一条边
    图:
        由顶点组成的数组
        顶点数量    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值