这是一个图的最简单的接口,很不齐全,也没有实现,实现放在以后再写。
// 边:
struct Edge
{
int v, w;
Edge(int v=-1, int w=-1): v(v), w(w){}
};
// 图:
class GRAPH
{
public:
GRAPH(int, bool); // 两个参数:顶点数和是否为有向图
~GRAPH();
int V() const; // 返回顶点数
int E() const; // 返回边数
bool directed() const; // 是否为有向图
int insert(Edge); // 插入边
int remove(Edge); // 删除边
bool edge(int, int); // 两个顶点是否邻接(有一条边直接连接这两个顶点)
// 迭代器:
class adjIterator
{
public:
adjIterator(const GRAPH&, int );// 第一个参数:图的引用,第二个:顶点
int beg(); // 返回第一个与该顶点邻接的顶点
int nxt(); // 下一个
bool end(); // 是否为最后一个
};
private:
// member variables
};
之所以没有实现这个接口,是因为它依赖于图的具体的表示。
迭代器的实现,为我们遍历与某个顶点邻接(v)的顶点集合提供了方便。