图:图的定义和存储

图的定义和基本术语

(一)图Graph的定义
图是一种网状数据结构,形式化定义如下:
{ G r a p h = ( V , R ) V = { x ∣ x ∈ D a t a O b j e c t } R = { V R } , V R = { &lt; x , y &gt; ∣ P ( x , y ) , ( x , y ∈ V ) } \left\{ \begin{array}{lr} Graph=(V,R) \\ V=\{x|x \in DataObject\} \\ R=\{VR\},VR=\{&lt;x,y&gt; | P(x,y) , (x,y \in V)\} \end{array} \right. Graph=(V,R)V={xxDataObject}R={VR},VR={<x,y>P(x,y)(x,yV)}
集合DataObject中的所有元素具有相同的特性,V中数据元素常称为顶点(vertex),VR是两个顶点之间关系的集合,P(x,y)表示x和y之间有特定的关联属性P。

&lt; x , y &gt; ∈ R &lt;x,y&gt;\in R <x,y>R,则 &lt; x , y &gt; &lt;x,y&gt; <x,y>表示从顶点x到顶点y的一条弧arc,并称x为弧尾(tail)或起始点,称y为弧头(head)或终端点,此时图中的边是有方向的,称这样的图为有向图。

&lt; x , y &gt; ∈ V R &lt;x,y&gt;\in VR <x,y>VR,且有 &lt; y , x &gt; ∈ V R &lt;y,x&gt; \in VR <y,x>VR,即VR是对称关系,这时以无序对(x,y)来代替两个有序对,表示x和y之间的一条边(edge),称这样的图为无向图。

在这里插入图片描述

ADT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个顶点的多个邻接点之间谁先谁后实际上是没有规定的。但是,如果这个图使用邻接矩阵存储,存储上就有先后之分了,这里的First和Next指的就是存储上的关系。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
边数等于1/2度数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完全图一定是连通图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图的存储结构

在这里插入图片描述
一个一维数组,一个二维数组
在这里插入图片描述
在这里插入图片描述
无向图的邻接矩阵显然是对称的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于有向图:
(1,2) (1,3) (1,4) … 是顶点1的出度。行和即出度。
(2,1) (3,1) (4,1) … 是顶点1的入度。列和即入度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
注意:
1)
节点位置序号:0 1 2 3 4 …
节点内容:1 2 3 4 5 …
2)
表头节点表顺序存储,后边的顶点单链表链式存储
3)
顶点单链表的先后次序由读入边的次序决定,也由顶点单链表头插还是尾插决定
4)
有向图每条边被存放一次,无向图一条边被存放两次

如果是网怎么表示?
需要再加上一个权值域 
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 在这里插入图片描述
 在这里插入图片描述
 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
黄色箭头描述邻接表,灰色箭头描述逆邻接表
在这里插入图片描述
邻接多重表针对无向图
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值