数据结构:第六章图1-课件

合集下载

数据结构:第六章图1

数据结构:第六章图1

三、图的抽象数据类型定义:
ADT Graph { 数据对象V:一个集合,该集合中的所有元素
具有相同的特性。 数据关系R:R={VR}
VR={<x,y>∣P(x,y)∧(x,y∈V)} 基本操作: }
基本操作
(1)GreateGraph(G):创建图G。 (2)DestoryGraph(G):销毁图G。
生成树、生成森林
设图G=(V,{VR}) 和 B
图 G=(V,{VR}),
A
且 VV, VRVR,
B
则称 G 为 G 的子图。
C
15 A 9
E F
11
B 7 21
E
3
C2 F
弧或边带权的 图分别称作有向
网或无向网。
假设图中有 n 个顶点,e 条边,则
含e=n(n-1)/2 条边的无向图称作 无向完全图;
A
B
E
CD
01 00 1 00 10 0 00 01 0 11 00 0 00 10 0
每行1的个数就是对应节点的出度 每列1的个数就是对应节点的入度
网的邻接矩阵
Wij 若<vi,vj>或(vi,vj)VR A[i,j]=
∞ 反之 ∞ 15 ∞ ∞ 9
A
15
9
B 7 11
E
3C
21
D
2
∞∞ 3 ∞∞ ∞∞∞ 2 ∞ 11 7 ∞ ∞ ∞ ∞ ∞ 21 ∞ ∞
return(j); }
int CreateDN(AdjMatrix *G) /*创建一个有向网*/ { int i,j,k,weight; VertexData v1,v2;
scanf("%d,%d",&G->arcnum,&G->vexnum); for(i=0;i<G->vexnum;i++) for(j=0;j<G->vexnum;j++)

精品课件-数据结构实用教程(C语言版)-第六章 图

精品课件-数据结构实用教程(C语言版)-第六章 图

对顶点的访问操作
LocateVex(G, u); // 若G中存在顶点u,则返回该顶点在 // 图中“位置” ;否则返回其它信息。
GetVex(G, v);
// 返回 v 的值。
PutVex(&G, v, value); // 对 v 赋值value。
对邻接点的操作
FirstAdjVex(G, v); // 返回 v 的“第一个邻接点” 。若该顶点 // 在 G 中没有邻接点,则返回“空”。
在图结构中,对结点(图中常称为顶点)的前趋和后继个数都 是不加限制的,即结点之间的关系是任意的。图中任意两个结 点之间都可能相关。
由此,图的应用极为广泛,特别是近年来的迅速发展,已渗透 到诸如语言学、逻辑学、物理、化学、电讯工程、计算机科学 以及数学的其它分支中。
6.1 图的基本概念
6.1.1 图的结构定义:
1
3
6 回路:1,2,3,5,6,3,1
G1
简单回路:3,5,6,3
例 1
57
32 4 6 G2
路径:1,2,5,7,6,5,2,3 路径长度:7 简单路径:1,2,5,7,6 回路:1,2,5,7,6,5,2,1 简单回路:1,2,3,1
无向图G中,若从顶点v到顶点w有路径,则称v和w是连通 的;若图G中任意两个顶点之间都有路径相通,则称此图为连 通图;否则,称之为非连通图。
NextAdjVex(G, v, w); // 返回 v 的(相对于 w 的)“下一个邻接点”。 // 若w是v的最后一个邻接点,则返回“空”。
插入或删除顶点
InsertVex(&G, v);
//在图G中增添新顶点v。
DeleteVex(&G, v); // 删除G中顶点v及其相关的弧。

数据结构第6章图

数据结构第6章图

2020/3/4
6.1 图的逻辑结构
15 of 169
图的基本术语
稀疏图:称边数很少的图为稀疏图;
稠密图:称边数很多的图为稠密图。
顶点的度:在无向图中,顶点v的度是指依附于该顶 点的边数,通常记为TD (v)。 顶点的入度:在有向图中,顶点v的入度是指以该顶 点为弧头的弧的数目,记为ID (v); 顶点的出度:在有向图中,顶点v的出度是指以该顶 点为弧尾的弧的数目,记为OD (v)。
6.1 图的逻辑结构
19 of 169
图的基本术语
路径:在无向图G=(V, E)中,从顶点vp到顶点vq之间的 路径是一个顶点序列(vp=vi0,vi1,vi2, …, vim=vq),其中, (vij-1,vij)∈E(1≤j≤m)。若G是有向图,则路径也是有 方向的,顶点序列满足<vij-1,vij>∈E。
2020/3/4
6.1 图的逻辑结构
21 of 169
图的基本术语
非带权图——路径上边的个数 路径长度:
带权图——路径上各边的权之和
V1
8 2
V4
2
V2
3
V3 6 5
V5
V1 V4:长度为8 V1 V2 V3 V4 :长度为7 V1 V2 V5V3 V4 :长度为15
2020/3/4
6.1 图的逻辑结构
6.1 图的逻辑结构
10 of 169
图的基本术语
邻接、依附
有向图中,对于任意两个顶点vi和顶点vj,若存在弧 <vi,vj>,则称顶点vi邻接到顶点vj,顶点vj邻接自顶 点vi,同时称弧<vi,vj>依附于顶点vi和顶点vj 。
V1
V2
V1的邻接点: V2 、V3

数据结构PPT(第六章)

数据结构PPT(第六章)

二叉树的链表表示
leftChild data parent rightChild parent
data
leftChild rightChild
三叉链表
root
root
root
A
B C D
C
A
B D
C
A
B

D
F
E
F
E F
E
二叉树
二叉链表
三叉链表
二叉树链表表示的示例
root
如图所示的二叉树的前序遍历顺序为 ABC@@DE@G@@F@@@
A B C @ @ @ @ E G @ @ D F @
@
void Crt_BinTree ( ifstream & in, BinTreeNode *& T ) { TreeData x; if ( !in.eof ( ) ) { in >> x; //读入根结点的值 if ( x != RefValue ) { T = new BinTreeNode; //建立根结点 if ( T == NULL ) { cerr << “存储分配错!” << endl; exit (1); } T->data = x;
A B E F C G H D I J
1层 2层 3层
height =4
K
L
M
4层
二叉树 (Binary Tree)
二叉树的定义
一棵二叉树是结点的一个有限集合, 该集合或者为空,或者是由一个根结点加 上两棵分别称为左子树和右子树的、互不 相交的二叉树组成。
L
R
L
R
二叉树的五种不同形态
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)LocateVertex(G,v):确定顶点v在图G中 的位置。若图G中没有顶点v,则函数值为“空”(1).
(4)GetVertex(G,I):取出图G中的第i个顶点 的值。若i>图G中顶点数,则函数值为“空”.
(5)FirstAdjV (G,v):求图G中顶点v的第一 个邻接点。若v无邻接点或图G中无顶点v,则 函数值为“空”(-1)。
一、图的邻接矩阵存储表示
定义: 行列数等于顶点数,下标为顶点序号
矩阵的元素为
Aij={
0 1
(i,j)VR (i,j)VR
B
C
010010
100011
A
D 000101
001001
F
E
110000 011100
(6)NextAdjV (G,v,w):已知w是图G中顶 点v的某个邻接点,求顶点v的下一个邻接点 (紧跟在w后面)。若w是v的最后一个邻接点, 则函数值为“空”(-1)。
(7)InsertVertex(G,u):在图G中增加一个 顶点u。
(8)DeleteVertex(G,v):删除图G的顶 点v及与顶点v相关联的弧。
则称此图为连通图。 A
C D
B A
F
C
F
E
若无向图为非连
D 通图,则图中各个极
大连通子图称作此图
E
的连通分量。
对有向图, 若任意两个顶点之间都存在一条
有向路径,则称此有向图为强连通图。
否则,其各极大强连通子图称作它的强连通分量。
A
A
B C
E F
B C
E F
假设一个连通图有 n 个顶点和 e 条边, 其中 n-1 条边和 n 个顶点构成一个极小连通子图, 称
称 x 为弧尾,y 为弧头。 P(x,y) 定义了弧 <x,y>的意义或信息,
表示x和y间的特定关联属性。
有向图
由于“弧”是有方向的,因此称由顶
点集和弧集构成的图为有向图。
例如:
G1 = (V1, {VR1})
A
其中
V1={A, B, C, D, E}
B
E VR1={<A,B>, <A,E>,
<B,C>, <C,D>, <D,B>,
11
B 7 21
E
3
C2 F
弧或边带权的 图分别称作有向
网或无向网。
假设图中有 n 个顶点,e 条边,则
含e=n(n-1)/2 条边的无向图称作 无向完全图;
含 e=n(n-1) 条弧的有向图称作 有向完全图;
若边或弧的条数 e < nlogn,则称作稀 疏图,否则称作稠密图。
对于无向图:顶点v 和w 之间存在一条边(v,w), 则称顶点v 和w 互为邻接点,称边(v,w)依附于顶 点v 和w ,边(v,w)与顶点v 和w相关联。
如图: A
B
E
CF
路径{A,E,C,F,B,C,F} 的路径长度为6
回路: 首尾顶点相同 的路径。{B,C,F,B} {A,E,C,F,B,C,F,A}
简单路径:顶点不重复 的路径。{A,E,C,F} 简单回路:中间顶点不 重的回路{A,E,C,F,A}
若无向图G中任意两个
顶点之间都有路径相通,
B
F
E
二、基本术语
子图、网 完全图、稀疏图、稠密图
邻接点、相关联、度
入度、出度
路径、路径长度、简单路径、简单回路 连通图、连通分量、 强连通图、强连通分量
生成树、生成森林
设图G=(V,{VR}) 和 B
图 G=(V,{VR}),
A
且 VV, VRVR,
B
则称 G 为 G 的子图。
C
15 A 9
E F
CD
<D,A>, <E,C> }
无向图
由顶点集和边
若 <v,w>VR 必有 <w,v>VR, 集构成的图称
则以(v,w)代替这两个有序对, 作无向图。
称v 和 w之间存在一条边。
例如: G2=(V2,{E2})
BC
V2={A,B,C,D,E,F} A
D
E2={(A,B),(A,E),(B,E),
(C,D),(D,F),(B,F),(C,F)}
顶点的度(TD)=
ID(B) = 2
出度(OD)+入度(ID)
TD(B) = 3
设在图G=(V,{VR}) 的顶点序列{ u=vi,0,vi,1, …, vi,m=w} 中, 有 (vi,j-1,vi,j)VR ,1≤j≤m, 则称从顶 点u到顶点w之间存在一条路径。路径上边的数
目称作路径长度。 有向图的路径也是有向的。
与顶点v 相关联的边的条数定义为v的度。
例如:
BC
ID(B) = 3 ID(A) = 2
A F
D E
对于有向图
若顶点v 和w 之间存在一
A
条弧<v,w>,则称顶点v邻
接到顶点w,顶点w邻接自
B
E 顶点v,称弧<v,w>与顶点v
CF
和w 相关联。
顶点v的出度:以v为尾的弧的数目 例如:
顶据结构:第六章图 1
6.1 图的定义与基本术语 6.2 图的存储结构
6.1 图的定义与基本术语
一、定义:图是由顶点集 V 和弧集 R构成的
Graph = (V , R ) 其中: V={x|x∈dataobject} R={VR}
VR={<x,y>| P(x,y)且(x,y∈V)} <x,y>表示从 x 到 y 的一条弧,
该极小连通子图为此连通图的生成树。
B A
F
C D
E
对非连通图, 则称由各个连通分 量的生成树构成的 集合为此非连通图
的生成森林。
顶点在图中的位置
在图中,我们可以将任一顶点看成是图 的第一个顶点,同理,对于任一顶点而言, 它的邻接点之间也不存在顺序关系。为了 操作的方便,我们需要将图中的顶点按任 意序列排列起来。顶点在这个人为的随意 排列中的位置序号称为顶点在图中的位置。
(9)InsertArc(G,v,w):在图G中增加 一条从顶点v到顶点w的弧。
(10)DeleteArc(G,v,w):删除图G中 从顶点v到顶点w的弧。
(11)TraverseGraph(G):按照某种次序, 对图G的每个结点访问一次且最多一次。
6.2 图的存储结构
一、图的邻接矩阵存储表示 二、图的邻接表存储表示 三、有向图的十字链表存储表示 四、无向图的邻接多重表存储表示
三、图的抽象数据类型定义:
ADT Graph { 数据对象V:一个集合,该集合中的所有元素
具有相同的特性。 数据关系R:R={VR}
VR={<x,y>∣P(x,y)∧(x,y∈V)} 基本操作: }
基本操作
(1)GreateGraph(G):创建图G。 (2)DestoryGraph(G):销毁图G。
相关文档
最新文档