图型结构(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顶点的边
顶点:
数据
指向与顶点有关系的一跳边
图:
由顶点组成的数组
顶点数量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值