数据结构之图课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对于有权图(网) 例:
邻接矩阵用二维数组即可存储,定义如下: int adjmatrix ARRAY[n][n];
产生无向图邻接矩阵算法
void creatgraph (int adjarray[ ][ ]) { int i, j, v1, v2, num;
scanf (“%d”,&num); /*输入顶点数*/ if (num>0) {







强连通图和强连通分量:在有向图G中,如 果从顶点Vi到顶点Vj和从顶点Vj到顶点Vi之 间都有路径,则称这两个顶点是强连通的。 如果图中任何一对顶点都是强连通的,则此 图叫做强连通图。非强连通图的每一个极大 强连通子图叫做强连通分量。
生成树:有n个顶点,n-1条边的树,且 V'=V, E'E。
数据结构之图课件
第7章 图
知 识 点
图的逻辑结构特征及图的基本术语
邻接矩阵和邻接表两种图的存储结构的特点 及适用范围
深度优先搜索和广度优先搜索两种遍历算法 的特点和执行过程
生成树和最小生成树的概念及构造最小生成 树的prim和kruskal算法 最短路径的含义及求最短路径的算法 拓扑排序的基本思想和步骤 关键路径法及其在管理科学中的作用
例如图6.3所示的图是图6.1中G1的一些子图。
图7.3 子图

②①




⑤4

顶点的度:图中与每个顶点相连的边数,叫 该顶点的度(Degree),记作TD(V)。
入度、出度:对于有向图,顶点的度分为入 度和出度,入度是以该顶点为终点的入边数 目;出度是以该顶点为起点的出边数目,该 顶点的度等于其入度和出度之和。分别记作 ID(V),OD(V)。
在无向图的邻接表中,各顶点对应的单链表 的结点数(不算表头结点)就等于该顶点的 度数。


权和网络:有些图, 对应每条边有一相应的 数值,这个数值叫做该边的权(Weight)。边 上带权的图称为带权图,也称为网络 (Network)。
子图:设有两个图G =(V,E)和G’=(V’,E’),若 V(G’)V(G),E(G’) E(G),则称G’是G的子 图(Subgraph)。
} while(v1!=0 && v2!=0); } else
num=0; retrun (num); }
2. 邻接表
邻接表是图的一种链接存储结构。
在邻接表结构中,对图中每个顶点建立 一个单链表,第i个单链表中的结点表示 与结点Vi相关连的边;对于有向图则表 示以该顶点为起点的一条边的终点。
for (i=1; i<=num; i++) for (j=1; j<=num; j++) adjarry [i][j]=0; /*矩阵初始化*/
do { scanf (“%d,%d”,&v1,&v2); /*输入边*/ adjarray[v1][v2]=1; adjarray[v2][v1]=1;
连通、连通图:在无向图中,如果从顶点 Vi到顶点Vj之间有路径,则称这两个顶点 是连通的。如果图中任意一对顶点都是连 Fra Baidu bibliotek的,则称此图是连通图(Connected graph)。
连通分量:非连通图的每一个极大连通子 图叫连通分量(Connected Component)。
图7.4 非连通图G
图7.6 无向图的邻接矩阵
○A
A BC D
0 1 1 1 A
○B
○C
A


1
0
1
1

B
1 1 0 1 C
○D

1
1
1
0

D
图7.7 有向图的邻接矩阵
○A
ABC
0 1 1A
B


0
0
1

B
○B
○C
0 1 0 C
可以看出:
1. 无向图的邻接矩阵是对称的,
图7.1 有向图与无向图









无向图G1
有向图G2
完全图:在一个有n个顶点的无向图中,若每 个顶点到其它(n-1)个顶点都连有一条边, 这种图称为完全图。完全图中共有n(n-1)/2条 边,(Complete graph,也称完备图)。

左图所示就是n=4

的完全图,它一 共有六条边。
路径(回路):若从某顶点Vp出发,沿一些边 经过顶点V1,V2,…,Vm到达,Vq,则称顶点序列 (Vp, V1,V2,…,Vm, Vq)为从Vp到Vq的路径(Path)。 若其中间顶点不重复,则称简单路径;若第1 个顶点和最后一个顶点相同,则称为回路。
路径长度:对于无权的图,路径长度指的是沿 此路径上边的数目;对于有权图,一般是取沿 路径各边的权之和作为此路径的长度。
一个图的邻接矩阵表示是唯一的,但其 邻接表表示是不唯一的。因为在邻接表 的每个单链表中,各结点的顺序是任意 的。
有两种结点: 1. 表头结点:
每个链表设一表头结点
Vexdata
firstarc
Vexdata:结点信息 Firstarc: 第一条边
2. 边表结点:vertex info nextarc
图7.5 图G2的强连通分量




返回
7.2 图的存储结构
1。邻接矩阵表示法
邻接矩阵是表示顶点之间相邻关系的矩阵。所谓两顶 点的相邻关系即它们之间有边相连。
若图有n个结点数,邻接矩阵是一个(n×n)阶方阵。
对无权图,
1 A[i,j] 0
对无向图 (Vi,V若 j)边存 ,在 对有向 Vi,V 图 j 边 若 反之
2. 即若A[i,j]=1,必有A[j,i]=1。所以, 只存储其上三角阵元素即可.
3. 2. 对无向图, 结点Vi的度, 是邻接矩阵中,第i 行1的个数.
对有向图, 邻接矩阵一般是不对称的,A[i,j] 不一定等于A[j,i]。
结点Vi的出度OD(Vi), 是邻接矩阵中,第i行1 的个数.
结点Vi的入度ID(Vi), 是邻接矩阵中,第i列1的 个数.
vertex:存放与顶点Vi相邻接的顶点 nextarc:指向依附于顶点Vi的下一条边所对
应的结点 Info: 有权图(网络)中边的权值
例:无向图,有向图
VA
B
C
D∧
VB
A
C
D∧
VC
A
B
D∧
VD
A
B
C∧
图7.6中无向图对应的邻接表
VA
B
C∧
VB
C∧
VC
B∧
图7.7中有向图对应的邻接表
对于无向图的邻接表来说,一条边对应两个 单链表结点,邻接表结点总数是边数的2倍。
相关文档
最新文档