数据结构java第07章

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

m st数 组 起点 终点 权
024
i
2 1 16
2 3 18
m in
247
已加入 TE的 边
调整后再 选最小权 值的边
(a) U={A}, TE={}, m st中 是 起 点 为 A的 边
(b) U={A,C}, TE={(0,2,4)}
A
D
4
C
9
7
i
B
3
E min
m st数 组
024 TE
247
数据结构(Java版)
(第2版)
叶核亚
可编辑版
Fra Baidu bibliotek
1
数据结构(Java版)(第2版)
➢ 第0章 Java程序设计基础
➢ 第1章 绪论
➢ 第2章 线性表
➢ 第3章 栈与队列
➢ 第4章 串
➢ 第5章 数组和广义表
➢ 第6章 树和二叉树
➢ 第7章 图
➢ 第8章 查找
➢ 第9章 排序
➢ 第10章 综合应用设计
➢ 第11章 Jav可a编开辑版发运行环境
2
第7章 图
7.1 7.2 7.3 7.4 7.5
图及其抽象数据类型 图的表示和实现 图的遍历 最小生成树 最短路径
▪ 目的:理解图结构。
▪ 要求:掌握图的存储结构和操作实现。
▪ 重点:图的两种存储结构,遍历算法,最小生成 树,最短路径。
▪ 难点:图的存储和操作实现,最小生成树,最短
boolean removeEdge(int i, int j); //删除边
int getFirstNeighbor(int v);
//返回邻接顶点序号
int getNextNeighbor(int v, int w); //返回下一个邻接顶点
}
8
可编辑版(Java版)(第2版)》
7.2 图的表示和实现
7.2.1 图的邻接矩阵表示 7.2.2 图的邻接表表示
9
可编辑版(Java版)(第2版)》
7.2.1 图的邻接矩阵表示
1. 邻接矩阵
aij 1 0
① 不带权图的邻接矩阵
若 (vi,vj)E或 vi,vj E 若 (vi,vj)E或 vi,vj E
① 带权图的邻接矩阵
10
可编辑版(Java版)(第2版)》
7.3.1 图的深度优先搜索遍历 7.3.2 图的广度优先搜索遍历
17
可编辑版(Java版)(第2版)》
7.3.1 图的深度优先搜索遍历
18
可编辑版(Java版)(第2版)》
7.3.2 图的广度优先搜索遍历
19
可编辑版(Java版)(第2版)》
7.4 最小生成树 7.4.1 生成树
1. 树 2. 生成树和生成森林 3. 最小生成树
2.邻接表表示的带权图类
① 顶点表元素类 ② 邻接表表示的带权图类的声明及构造方法 ③ 图的插入操作
15
可编辑版(Java版)(第2版)》
④ 图的删除操作 ⑤ 邻接表表示的图类
A2D
9
5
6
8
E
B
C3
7
0A 1B 2C
删除顶点及 边单链表
3D 4E
015 105 217 302 423
0 3 2∧ 127 238 316 4 3 9∧
//返回顶点数
E get(int i);
//返回顶点vi元素
boolean insertVertex(E vertex); //插入顶点
boolean insertEdge(int i, int j, int weight); //插入边
boolean removeVertex(int v); //删除顶点
路径。
3
可编辑版(Java版)(第2版)》
7.1 图及其抽象数据类型
7.1.1 图的基本概念
1. 图的定义和术语
G=(V, E)
V={A | A∈某个数据元素集合}
E={(A, B) | A, B∈V}
① 无向图
② 有向图
4
可编辑版(Java版)(第2版)》
③ 完全图 ④ 带权图 ⑤ 邻接顶点
5
2.邻接矩阵表示的带权图类
① 邻接矩阵表示的带权图类的声明及构造方法
顶点集合{"A","B","C","D","E"}; 边集合{ (0,1,5), (0,3,2), (1,0,5), (1,2,7), (1,3,6), (2,1,7), (2,3,8), (2,4,3),
(3,0,2),(3,1,6), (3,2,8), (3,4,9), (4,2,3), (4,3,9)};
可编辑版(Java版)(第2版)》
2.顶点的度
deg(A)=indeg(A)+outdeg(A) 3.子图
6
可编辑版(Java版)(第2版)》
4.路径 5.连通性
7
可编辑版(Java版)(第2版)》
7.1.2 图抽象数据类型
public interface GGraph<E> { //图接口
int vertexCount();
4 3 9 调整 4 1 3 再选
A
D
4
m st数 组 024
C
9
247
TE
7
413
B
3
E
i
439
(c) U ={A ,C,E}, TE={(0,2,4),(2,4,7)}
(d) U ={A ,C,E,B}, TE={(0,2,4),(2,4,7),(4,1,3)}
A
D
4
C
9
7
B
3
E
m st数 组 024 247 413 439
(e) U ={A ,C,E,B,D }=V , TE={(0,2,4),(2,4,7),(4,1,3),(4,3,9)}
22
可编辑版(Java版)(第2版)》
2.Kruskal算法
20
可编辑版(Java版)(第2版)》
7.4.2 最小生成树的构造算法
1. Prim算法
21
可编辑版(Java版)(第2版)》
A
22
4
25
C
B
D i
m in
E
m st数 组
起点 终点 权
0 0 1 25 权 值 1 0 2 4 最小 2 0 3 22 的 边
30 4 ∞
A 4
D 18
C
16
7
B
E
(a) 在G3的邻接表存储结构中删除顶点C
1 3 6∧ 2 4 3∧ 328
3 4 9∧
未删除的边结点更改 某些顶点序号
A2D
9
5
6
E
0A 1B 2D
015 105 202
0 2 2∧ 1 2 6∧ 216
2 3 9∧
B
3E
3 2 9∧
(b) 删除顶点C之后
16
可编辑版(Java版)(第2版)》
7.3 图的遍历
② 图的插入操作
11
可编辑版(Java版)(第2版)》
③ 图的删除操作 ④ 带权值的边类 ⑤ 邻接矩阵表示的带权图类
12
可编辑版(Java版)(第2版)》
7.2.2 图的邻接表表示
1. 邻接表
① 无向图的邻接表表示
13
可编辑版(Java版)(第2版)》
② 有向图的邻接表表示
14
可编辑版(Java版)(第2版)》
相关文档
最新文档