1、图的抽象数据类型
![]()
1 ADT Graph
2 {
3 数据:
4 Graph = (Vertex, Edge)是可以用不同方式存储的图,Vertex是顶点集,
5 Edge = { <vtx_1, vtx_2> | vtx_1, vtx_2属于Vertex, vtx_1不等于vtx_2, <vtx_1, vtx_2>是连接vtx_1, vtx_2的边 }
6
7 操作:
8 void InitGraph(Graph &G, int vtxCnt, bool directed); // 按顶点个数和有向标志构造图
9 void DestroyGraph(Graph &G); // 清除原有的图G
10 bool IsDirected(Graph &G); // 判断图G是否是有向图
11 int VertexCount(Graph &G); // 求出并返回图G的顶点数
12 int EdgeCount(Graph &G); // 求出并返回图G的边数
13 int FirstAdjoinVertex(Graph &G, int vtx); // 返回vtx的第一个邻接顶点,若无邻接点返回-1
14 int NextAdjoinVertex(Graph &G, int vtx_1, int vtx_2); // 返回vtx_1的下一个邻接点(相对于vtx_2)
15 void Insert(Graph &G, int vtx_1, int vtx_2); // 在图中插入边<vtx_1, vtx_2>
16 void Delete(Graph &G, int vtx_1, int vtx_2); // 在图中删除边<vtx_1, vtx_2>
17 bool EdgeExisting(Graph &G, int vtx_1, int vtx_2); // 判断边<vtx_1, vtx_2>是否是图的边
18 void Traverse(Graph &G, int vtx, *Visit()); // 从顶点vtx开始遍历图,Visit()代表遍历策略
19 };
View Code