基本操作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 有多个邻接点,则在图的存储结构建立之后,其邻接点之间的相对次序也就自然形成了。