graph.h 894 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. void add_node(Node* node);
  29. void remove_node(Node* node);
  30. void add_edge(Node* begin, Node* end);
  31. void remove_edge(Node* begin, Node* end);
  32. node_iterator begin() {
  33. return nodes.begin();
  34. };
  35. node_iterator end() {
  36. return nodes.end();
  37. };
  38. };