MTK++ Latest version: 0.2.0

graph.h
Go to the documentation of this file.
00001 
00033 #ifndef GRAPH_H
00034 #define GRAPH_H
00035 
00036 #include <iostream>
00037 #include <string>
00038 #include <vector>
00039 #include <algorithm>
00040 #include <map>
00041 #include <fstream>
00042 #include <iomanip>
00043 #include <stdlib.h>
00044 #include <sstream>
00045 
00046 namespace MTKpp
00047 {
00048 
00049 class vertex;
00050 struct edge;
00051 
00052 // ============================================================
00053 // Class : graph()
00054 // ------------------------------------------------------------
00062 // ============================================================
00063 
00064 class graph
00065 {
00066 public:
00067 
00071     graph();
00072 
00077     graph(graph* g);
00078 
00080     virtual ~graph();
00081 
00086     vertex*                  addVertex();
00087 
00093     vertex*                  addVertex(int index);
00094 
00100     vertex*                  addVertex(vertex* v);
00101 
00107     vertex*                  getVertex(std::string n);
00108 
00114     vertex*                  getVertex(int n);
00115 
00120     std::vector<vertex*>     getVertices();
00121 
00127     void                     addEdge(vertex* a, vertex* b);
00128 
00135     edge*                    getEdge(vertex* a, vertex* b);
00136 
00143     bool                     hasEdge(int i, int j);
00144 
00151     void                     delEdge(int i, int j);
00152 
00157     std::map<int, edge*>     getEdges();
00158 
00163     void                     dfs(vertex* v);
00164 
00168     void                     reset();
00169 
00171     int                      counter;
00172 
00174     unsigned int             getNumVertices();
00175 
00176 protected:
00177 
00179     vertex* pVertex;
00180  
00182     edge* pEdge;
00183 
00185     std::vector<vertex*>     itsVertices;
00186 
00188     std::map<int, edge*>     itsEdges;
00189 
00191     int                      vertexIndex;
00192 
00194     int                      edgeIndex;
00195 
00197     unsigned int             maxEdges;
00198 
00200     //typedef std::vector<vertex*>::iterator vertexIterator;
00201 
00203     typedef std::map<int, edge*>::iterator edgeIterator;
00204 };
00205 
00206 } // MTK++ namespace
00207 
00208 #endif // GRAPH_H
00209 

Generated on Fri Dec 23 2011 09:28:50 for MTK++ by Doxygen 1.7.5.1