graph.cpp 955 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "graph.h"
  2. void Node::add_neigboor(Node* neighboor)
  3. {
  4. neighboors.insert(neighboor);
  5. }
  6. void Node::remove_neighboor(Node* neighboor)
  7. {
  8. neighboors.erase(neighboor);
  9. }
  10. Node::Node(const string& aname)
  11. {
  12. name = aname;
  13. }
  14. const string Node::get_name() const
  15. {
  16. return name;
  17. }
  18. void Graph::add_node(Node* node)
  19. {
  20. nodes.insert(node);
  21. }
  22. void Graph::remove_node(Node* node)
  23. {
  24. nodes.erase(node);
  25. for (set<Node*>::iterator it = nodes.begin(); it != nodes.end(); it++) {
  26. (*it)->remove_neighboor(node);
  27. }
  28. }
  29. void Graph::add_edge(Node* begin, Node* end)
  30. {
  31. if (nodes.find(begin) == nodes.end())
  32. return;
  33. if (nodes.find(end) == nodes.end())
  34. return;
  35. begin->add_neigboor(end);
  36. end->add_neigboor(begin);
  37. }
  38. void Graph::remove_edge(Node* begin, Node* end)
  39. {
  40. if (nodes.find(begin) == nodes.end())
  41. return;
  42. if (nodes.find(end) == nodes.end())
  43. return;
  44. begin->remove_neighboor(end);
  45. }