6.2 案例引入
六度空间理论
六度空间理论验证
6.3 图的类型定义
图的抽象数据类型定义如下
ADT Graph
{
数据对象V:具有相同特性的数据元素的集合,称为顶点集。
数据关系R:R={VR}
VR={
<v,w>|<v,w>|v,w∈V ^ p(v,w),
<v,w>表述从 v 到 w 的弧,p(v,w)定义了弧<v,w>的信息
}
}
图的基本操作
-
CreateGraph(&G,V,VR)
- 初始条件:V 是图的顶点集,VR 是图中弧的集合。
- 操作结果:按照 V 和 VR 的定义构造图 G。
-
DestoryGraph(&G)
- 初始条件:图 G 存在。
- 操作结果:销毁图 G。
-
LocateVes(G,u)
- 初始条件:图 G 存在, u 和 G 中顶点有相同特征。
- 操作结果:若 G 中存在顶点 u ,则返回该顶点在图中的位置,反之返回其他信息。
-
GetVex(G,v)
- 初始条件:图 G 存在,v 是 G 中的某个顶点。
- 操作结果:返回 顶点 v 的值。
-
PutVex(&G,v,value)
- 初始条件:图 G 存在,v 是 G 中的某个顶点,。
- 操作结果:对 V 赋值 value。
-
FirstAdjVex(G,v)
- 初始条件:图 G 存在,V 是 G 中的某个顶点。
- 操作结果:返回 V 的第一个邻接顶点、若 V 在 G 中没有邻接顶点,则返回 NULL。
-
NextAdjVex(G,v,w)
- 初始条件:图 G 存在,v 是 G 中的某个顶点,w 是 v 的邻接顶点。
- 操作结果:返回 v 的(相对于 w 的)下一个邻接顶点。若 w 是 v 的最后一个邻接点,则返回 NULL。
-
InSertVex(&G,v)
- 初始条件:图 G 存在,v 是 G 中的某个顶点。
- 操作结果:在图 G 中增添新顶点 v。
-
DeleteVex(&G,v)
- 初始条件:图 G 存在,v 是 G 中某个顶点。
- 操作结果:删除 G 中顶点 v 及其相关的弧。
-
InsertArc(&G,v,w)
- 初始条件:图 G 存在,v 和 w 是 G 中的两个顶点。
- 操作结果:在 G 中增添弧 <v,w> ,若 G 是无向图,则还增添对称弧 <w,v>。
-
DeleteArc(&G,v,w)
- 初始条件:图 G 存在,v 和 w 是 G 中的两个顶点。
- 操作结果:在 G 中删除弧 <v,w> ,若 G 是无向图,则还删除对称弧 <w,v>。 -
DFSTraverse(G)
- 初始条件:图 G 存在。
- 操作结果:对图进行深度优先遍历,在遍历过程中对每个顶点访问一次。
-
BFSTraverse(G)
- 初始条件:图 G 存在。
- 操作结果:对图进行广度优先遍历,在遍历过程中对每个顶点访问一次。