基本操作P: {结构初始化} CreateGraph(&G, V, VR); 初始条件:V 是图的顶点集,VR 是图中弧的集合。 操作结果:按 V 和 VR 的定义构造图 G。 {销毁结构} DestroyGraph(&G); 初始条件:图 G 存在。 操作结果:销毁图 G。 |
||||
{引用型操作} LocateVex(G, u); 初始条件:图 G 存在,u 和 G 中顶点有相同特征。 操作结果:若 G 中存在和 u 相同的顶点,则返回该顶点在图中位置; 否则返回其它信息。 GetVex(G, v); 初始条件:图 G 存在,v 是 G 中某个顶点。 操作结果:返回 v 的值。 |
顶点在图中的"位置"指的是,在图的存储结构中顶点之间自然形成的相对位置。 |
|||
FirstAdjVex(G, v); 初始条件:图 G 存在,v 是 G 中某个顶点。 操作结果:返回 v 的第一个邻接点。若该顶点在 G 中没有邻接点, 则返回"空"。 NextAdjVex(G, v, w); 初始条件:图 G 存在,v 是 G 中某个顶点,w 是 v 的邻接顶点。 操作结果:返回 v 的(相对于 w 的)下一个邻接点。若 w 是 v 的 最后一个邻接点,则返回"空"。 {加工型操作} PutVex(&G, v, value); 初始条件:图 G 存在,v 是 G 中某个顶点。 操作结果:对 v 赋值 value。 InsertVex(&G, v); 初始条件:图 G 存在,v 和图中顶点有相同特征。 操作结果:在图 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, Visit()); 初始条件:图 G 存在,Visit 是顶点的应用函数。 操作结果:对图 G 进行深度优先遍历。遍历过程中对每个顶点调用函数 Visit 一次且仅一次。一旦 visit() 失败,则操作失败。 BFSTraverse(G, Visit()); 初始条件:图 G 存在,Visit 是顶点的应用函数。 操作结果:对图 G 进行广度优先遍历。遍历过程中对每个顶点调用函数 Visit 一次且仅一次。一旦 visit() 失败,则操作失败。 } ADT Graph |
若<v,w>∈G,则称 w 为 v 的邻接点,若(v,w)∈G,则称 w 和 v 互为邻接点。 若 v 有多个邻接点,则在图的存储结构建立之后,其邻接点之间的相对次序也就自然形成了。 |