///////////////////////////////////////////////////////////////// // Graph.h - directed graph structure // // ver 1.0 // // ----------------------------------------------------------- // // copyright © Jim Fawcett, 2012 // // All rights granted provided that this notice is retained // // ----------------------------------------------------------- // // Jim Fawcett, CST 4-187, Syracuse University, 315 443 3948 // // Summer Projects, 2012 // // Win7, Visual Studio 2010 // ///////////////////////////////////////////////////////////////// #include "Graph.h" #include using namespace DirectedGraph; #ifdef TEST_GRAPH using graph = Graph; using vertex = Vertex; using DisplayGraph = Display; using walker = WalkFunctor; int main() { std::cout << "\n Demonstrating Graph Class"; std::cout << "\n ===========================\n"; try { graph g; vertex v1(1, "v1"); vertex v2(2, "v2"); vertex v3(3, "v3"); vertex v4(4, "v4"); g.addVertex(v1); g.addVertex(v2); g.addVertex(v3); g.addVertex(v4); g.addEdge("e1",v1,v2); g.addEdge("e2",v1,v3); g.addEdge("e3",v2,v3); g.addEdge("e4",v4,v3); DisplayGraph display(g); foreach(g, display); std::cout << "\n"; std::cout << "\n making graph copy:"; std::cout << "\n --------------------"; graph gcopy = g; foreach(gcopy, display); std::cout << "\n"; std::cout << "\n assigning gcopy to g:"; std::cout << "\n -----------------------"; g = gcopy; foreach(g, display); std::cout << "\n"; std::cout << "\n Depth First Search from v1"; std::cout << "\n ----------------------------"; dfs(g, walker()); std::cout << "\n Depth First Search from v4"; std::cout << "\n ----------------------------"; dfs(g, walker(), 4); std::cout << "\n\n"; } catch(std::exception& ex) { std::cout << "\n\n " << ex.what() << "\n\n"; } std::cout << "\n\n"; return 0; } #endif