后面的代码只考虑有向图,因为无向图可以看做一种特殊的有向图。
添加Graph.h文件:
1 #ifndef GRAPH_H 2 #define GRAPH_H 3 4 #include "Object.h" 5 #include "SharedPointer.h" 6 #include "Array.h" 7 8 namespace DTLib 9 { 10 11 template < typename V, typename E > 12 class Graph : public Object 13 { 14 public: 15 virtual V getVertex(int i) = 0; 16 virtual bool getVertex(int i, V& value) = 0; 17 virtual bool setVertex(int i, const V& value) = 0; 18 virtual SharedPointer< Array<int> > getAdjacent(int i) = 0; 19 virtual E getEdge(int i, int j, E& value) = 0; 20 virtual bool setEdge(int i, int j, const E& value) = 0; 21 virtual bool removeEdge(int i, int j) = 0; 22 virtual int vCount() = 0; 23 virtual int eCount() = 0; 24 virtual int OD(int i) = 0; 25 virtual int ID(int i) = 0; 26 virtual int TD(int i) 27 { 28 return ID(i) + OD(i); 29 } 30 }; 31 32 } 33 34 #endif // GRAPH_H
小结: