graph.h 911 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <string>
  2. #include <set>
  3. using namespace std;
  4. class Node {
  5. typedef set<Node*>::const_iterator node_iterator;
  6. private:
  7. string name;
  8. set <Node*> neighboors;
  9. void add_neigboor(Node* neighboor);
  10. void remove_neighboor(Node* neighboor);
  11. public:
  12. Node(const string& aname);
  13. const string get_name() const;
  14. node_iterator nb_begin() const {
  15. return neighboors.begin();
  16. };
  17. node_iterator nb_end() const {
  18. return neighboors.end();
  19. };
  20. friend class Graph;
  21. };
  22. class Graph
  23. {
  24. typedef set<Node*>::const_iterator node_iterator;
  25. private:
  26. set<Node*> nodes;
  27. public:
  28. Graph() {};
  29. void add_node(Node* node);
  30. void remove_node(Node* node);
  31. void add_edge(Node* begin, Node* end);
  32. void remove_edge(Node* begin, Node* end);
  33. node_iterator begin() {
  34. return nodes.begin();
  35. };
  36. node_iterator end() {
  37. return nodes.end();
  38. };
  39. };